【发布时间】:2018-12-10 12:18:04
【问题描述】:
正在运行 NodeJS 和 pg-promise。
我有一个数组:
let my_array = new array('x', 'y', 'z');
我正在尝试使用pg-promise 将其作为参数传递给我的PostgreSQL 查询:
db_webhooks.any('SELECT cars FROM my_cars WHERE id IN ($1)', [my_array])
.then...
但是由于类型错误而失败。
我尝试.join 数组,但也得到错误,因为它导致字符串'x,y,z' 而不是'x','y','z'。
打印出调用的调试/查询给了我:
QUERY: SELECT cars FROM my_cars WHERE id IN (array['x','y','z'])
这应该是:
QUERY: SELECT cars FROM my_cars WHERE id IN ('x','y','z')
【问题讨论】:
-
[my_array]将创建一个包含一个元素的数组,即您的数组new array('x', 'y', 'z')。试试db_webhooks.any(... , my_array) -
这给了我
QUERY: SELECT cars FROM my_cars WHERE id IN ('x'),所以只包含第一个元素。 -
好像
... id IN ($1:csv)解决了这个问题。 -
然后看来您的调用不接受数组参数但想要一个逗号分隔的字符串,然后
my_array.join(",")可能会成功。 -
如果您找到了解决您自己问题的方法,请不要犹豫,发布您自己的答案。
标签: node.js postgresql pg-promise