将 PostgresQL 查询转换为 Knex.js
Converting a PostgresSQL query into Knex.js
我必须使用 knex 在 whereIn
中使用 LOWER
函数。
我想更改下面的代码行
whereIn("name", members);
如果我这样做 whereIn('LOWER("name")', members);
,则出现错误
Column LOWER("name") is not present.
我尝试使用 knex.raw 但还是没有得到正确的语法。
const roleMembers = await t("roles")
.select({ role_id: "id" }, "name")
.whereIn(t.raw("LOWER('name')"), members);
错误:
当我尝试添加 await 时,语法错误消失了,但是当我执行此代码时,出现以下错误
错误:LOWER(name) - syntax error at or near "LOWER"
我指的是 http://knexjs.org/#Builder-whereIn
我们有 whereRaw
,whereIn
有类似的东西吗?需要一些帮助来解决这个问题。
注:我用的都是LOWER,更低,更低
knex.raw()
可用于列组件
knex('members').whereIn(knex.raw('Lower("name")'), members)
select * from `members` where Lower("name") in ('Tom', 'Dick', 'harry')
最终解决方案如下。
const roleMembers = await t("roles")
.select({ role_id: "id" }, "name")
.whereIn(t.raw('LOWER("name")') as any, members);
我对原代码的改动是
- 引号:交换了 " 和 '
- 降低,降低和降低工作
- 打字稿错误:添加为任意
感谢 Matt 和 Mikael 的指导。
我必须使用 knex 在 whereIn
中使用 LOWER
函数。
我想更改下面的代码行
whereIn("name", members);
如果我这样做 whereIn('LOWER("name")', members);
,则出现错误
Column LOWER("name") is not present.
我尝试使用 knex.raw 但还是没有得到正确的语法。
const roleMembers = await t("roles")
.select({ role_id: "id" }, "name")
.whereIn(t.raw("LOWER('name')"), members);
错误:
当我尝试添加 await 时,语法错误消失了,但是当我执行此代码时,出现以下错误
错误:LOWER(name) - syntax error at or near "LOWER"
我指的是 http://knexjs.org/#Builder-whereIn
我们有 whereRaw
,whereIn
有类似的东西吗?需要一些帮助来解决这个问题。
注:我用的都是LOWER,更低,更低
knex.raw()
可用于列组件
knex('members').whereIn(knex.raw('Lower("name")'), members)
select * from `members` where Lower("name") in ('Tom', 'Dick', 'harry')
最终解决方案如下。
const roleMembers = await t("roles")
.select({ role_id: "id" }, "name")
.whereIn(t.raw('LOWER("name")') as any, members);
我对原代码的改动是
- 引号:交换了 " 和 '
- 降低,降低和降低工作
- 打字稿错误:添加为任意
感谢 Matt 和 Mikael 的指导。