Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NodeJS, pg-promise and array as parameter

Running NodeJS and pg-promise.

I've got an array:

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

I'm trying to pass this as a parameter to my PostgreSQL query with pg-promise:

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

But it fails with type error. I've tried to .join the array, but also get error, as it result in a string 'x,y,z' instead of 'x','y','z'.

Printing out the debug/query called gives me:

QUERY: SELECT cars FROM my_cars WHERE id IN (array['x','y','z'])

This should be:

QUERY: SELECT cars FROM my_cars WHERE id IN ('x','y','z')
like image 832
Alfred Balle Avatar asked Nov 01 '25 04:11

Alfred Balle


1 Answers

The library supports CSV Filter for this purpose:

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

or you can use :list, which is the same:

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') */
like image 107
vitaly-t Avatar answered Nov 02 '25 19:11

vitaly-t



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!