【发布时间】:2018-10-27 03:52:28
【问题描述】:
parameterized queries with an IN clause的使用示例中,语法如下:
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,因为它似乎是interchangeable 和:csv)。
我尝试了各种组合,例如:
-
($(ids):list)(“:”或附近的语法错误) -
(${ids:list})(“$”或附近的语法错误)
我不断收到来自 Postgres 的无效语法错误。这支持吗?还是我必须将参数作为数组传递并像示例中那样引用它们?
版本:
- Postgres:9.5.7
- pg-promise: 5.7.1
更新
我将我的参数更改为... WHERE widget IN ($(ids:csv))...,现在它可以工作了,所以:list 和:csv 似乎不可互换。
【问题讨论】:
-
该示例似乎正确,因此必须关闭其他内容。您应该完全按照您的使用方式发布调用查询方法的完整示例。
-
@vitaly-t 我使用与版本一起使用的实际过滤器更新了问题。顺便说一句,漂亮的图书馆:)
标签: node.js postgresql pg-promise