NodeJS、pg-promise 和数组作为参数

Alf*_*lle 2 postgresql node.js pg-promise

运行NodeJSpg-promise

我有一个数组:

let my_array = new array('x', 'y', 'z');
Run Code Online (Sandbox Code Playgroud)

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

db_webhooks.any('SELECT cars FROM my_cars WHERE id IN ($1)', [my_array])
  .then...
Run Code Online (Sandbox Code Playgroud)

但它因类型错误而失败。我试过.join数组,但也得到错误,因为它导致一个字符串'x,y,z'而不是'x','y','z'.

打印出调用的调试/查询给了我:

QUERY: SELECT cars FROM my_cars WHERE id IN (array['x','y','z'])
Run Code Online (Sandbox Code Playgroud)

这应该是:

QUERY: SELECT cars FROM my_cars WHERE id IN ('x','y','z')
Run Code Online (Sandbox Code Playgroud)

vit*_*y-t 5

该库为此目的支持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') */
Run Code Online (Sandbox Code Playgroud)

或者您可以使用: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') */
Run Code Online (Sandbox Code Playgroud)