首页 > 解决方案 > 将 PostgresSQL 查询转换为 Knex.js

问题描述

我必须在使用 knex时使用该LOWER功能。whereIn我想更改下面的代码行

whereIn("name", members);

如果我这样做whereIn('LOWER("name")', members);了,当我尝试使用 knex.raw 时出现错误, Column LOWER("name") is not present. 但又没有得到正确的语法。

const roleMembers = await t("roles")
          .select({ role_id: "id" }, "name")
          .whereIn(t.raw("LOWER('name')"), members);

错误:在此处输入图像描述

index.d.ts(1184, 5)

当我尝试添加等待时,语法错误消失但是当我执行此代码时,我收到以下错误

错误:LOWER(name) - syntax error at or near "LOWER" 我指的是http://knexjs.org/#Builder-whereIn

我们有whereRaw,我们有类似的东西whereIn吗?需要一些帮助来解决这个问题。

注意:我使用了所有的LOWER,lower,Lower。

标签: javascriptsqlnode.jspostgresqlknex.js

解决方案


knex.raw()可用于列组件

knex('members').whereIn(knex.raw('Lower("name")'), members)
select * from `members` where Lower("name") in ('Tom', 'Dick', 'harry')

推荐阅读