使用带有模板文字的 Drizzle sql 运算符时出现错误:“无法确定参数 $1 的数据类型”

问题描述 投票:0回答:1

我有一个简单的桌子:

CREATE TABLE items (
  id SERIAL PRIMARY KEY, 
  name VARCHAR (50) UNIQUE NOT NULL, 
  price decimal NOT NULL
);


INSERT INTO items (name, price)
VALUES 
  ('sprocket1-2a', 50.0),
  ('bolt-2x', 39.10),
  ('nut2-7a', 88.50);

使用 Drizzle,我尝试执行原始 SQL 查询,例如

db.execute(
  sql`SELECT * FROM items WHERE name ILIKE '%${search}%'`,
),

但我收到错误

Error: could not determine data type of parameter $1

我知道我能做到

${sql.raw(search)}

为了解决这个问题,但我不想这样做,因为“搜索”将来自用户。我如何在这里安全地接受用户输入?

postgresql drizzle drizzle-orm
1个回答
0
投票

你应该创建这样的东西:

const preparedSearch = `%${search}%`;
db.execute(
  sql`SELECT * FROM items WHERE name ILIKE ${preparedSearch}`,
);

© www.soinside.com 2019 - 2024. All rights reserved.