带有命名参数的“WHERE col IN”

`WHERE col IN` with named parameters

在如何使用parameterized queries with an IN clause的例子中,语法如下:

const data = [1, 'two', 3, 'four'];

db.any('SELECT * FROM table WHERE id IN (:csv)', [data])
    .then(data => {
...

我似乎无法让它对命名参数起作用:

db.manyOrNone('SELECT widget FROM widgets WHERE id IN ($(ids:list))', 
              { ids: [1, 2, 3] })

(我使用 :list 因为它看起来是 interchangeable:csv)。 我尝试了各种组合,例如:

我不断收到来自 Postgres 的无效语法错误。这受支持吗?或者我是否必须像示例中那样将参数作为数组传递并引用它们?

版本:

更新 我将我的参数更改为 ... WHERE widget IN ($(ids:csv))... 现在可以使用了,所以 :list:csv 似乎 不能 可以互换。

问题是您使用的是 pg-promise 的旧版本。当前版本为8.4.4,您使用的是5.7.1

Alias :list 可与 :csv 完全互换,但添加时间比 v5.7.1

晚得多

升级到最新版本,:list也可以使用。

同时假设当前文档中的所有内容都相应地引用了库的当前版本。