首页 > 解决方案 > NodeJS、pg-promise 和数组作为参数

问题描述

运行NodeJSpg-promise

我有一个数组:

let my_array = new array('x', 'y', 'z');

我正在尝试将此作为参数传递给我的PostgreSQL查询pg-promise

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')

标签: node.jspostgresqlpg-promise

解决方案


该库为此目的支持CSV 过滤器:

await db.any('SELECT cars FROM my_cars WHERE id IN ($1:csv)', [my_array])
/*=> SELECT cars FROM my_cars WHERE id IN ('x', 'y', 'z') */

或者您可以使用:list,这是相同的:

await db.any('SELECT cars FROM my_cars WHERE id IN ($1:list)', [my_array])
/*=> SELECT cars FROM my_cars WHERE id IN ('x', 'y', 'z') */

推荐阅读