簡體   English   中英

將 PostgresSQL 查詢轉換為 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);

錯誤: 在此處輸入圖片說明

index.d.ts(1184, 5)

當我嘗試添加 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);

我對原始代碼的更改是

  1. 行情:交換了“和”
  2. 較低,較低和較低的工作
  3. 打字稿錯誤:添加為任何

感謝 Matt 和 Mikael 的指導。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM