[英]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,lower,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 的指導。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.