Node.js `其中col IN`带有命名参数

Node.js `其中col IN`带有命名参数,node.js,postgresql,pg-promise,Node.js,Postgresql,Pg Promise,在关于如何使用的示例中,语法如下所示: const data = [1, 'two', 3, 'four']; db.any('SELECT * FROM table WHERE id IN ($1:csv)', [data]) .then(data => { ... 对于命名参数,我似乎无法使其工作: db.manyOrNone('SELECT widget FROM widgets WHERE id IN ($(ids:list))', { i

在关于如何使用的示例中,语法如下所示:

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

db.any('SELECT * FROM table WHERE id IN ($1:csv)', [data])
    .then(data => {
...
对于命名参数,我似乎无法使其工作:

db.manyOrNone('SELECT widget FROM widgets WHERE id IN ($(ids:list))', 
              { ids: [1, 2, 3] })
(我使用的是
:list
,因为它似乎与
:csv
在一起)。 我尝试过各种组合,如:

  • ($(ids):列表)
    (语法错误位于或接近“:”)
  • (${ids:list})
    (在“$”处或附近出现语法错误)
我不断收到来自Postgres的无效语法错误。这是否得到支持?或者我必须像示例中那样将参数作为数组传递并引用它们吗

版本:

  • 博士后:9.5.7
  • pg承诺:5.7.1
更新
我将参数更改为
。。。小部件在($(ids:csv))…
中,它现在可以工作了,所以似乎
:list
:csv
是不可互换的。

问题是您使用的是一个旧版本的。当前版本是8.4.4,您使用的是5.7.1

别名
:list
可与
:csv
完全互换,但它的添加时间远晚于v5.7.1

升级至最新版本,它也将与
:list
一起使用


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

示例似乎正确,因此必须关闭其他内容。您应该发布调用查询方法的完整示例,这与您使用该方法的方式完全相同。@vitaly-t我用我在版本中使用的实际筛选器更新了该问题。顺便说一句,美丽的图书馆:)