Это описано в FAQ узла-postgres https://github.com/brianc/node-postgres/wiki/FAQ#11-how-do-i-build-a-where-foo-in--query-to-find-rows-matching-an-array-of-values
Как построить запрос WHERE foo IN (...), чтобы найти строки, соответствующие массиву значений?
node-postgres поддерживает отображение простых массивов JavaScript в массивы PostgreSQL, поэтому в большинстве случаев вы можете просто передать его как любой другой параметр.
client.query("SELECT * FROM stooges WHERE name = ANY ($1)", [ ['larry', 'curly', 'moe'] ], ...);
Обратите внимание, что = ANY - это еще один способ записи IN (...), но в отличие от IN (...) он будет работать так, как вы ожидаете, когда передаете массив в качестве параметра запроса.
Если вы заранее знаете длину массива, вы можете вывести его в список IN:
// passing a flat array of values will work:
client.query("SELECT * FROM stooges WHERE name IN ($1, $2, $3)", ['larry', 'curly', 'moe'], ...);
... но мало пользы, когда = ЛЮБОЙ работает с массивом JavaScript.
Если вы используете старую версию node-postgres или вам нужно создать более сложные массивы PostgreSQL (массивы составных типов и т. Д.), С которыми не справляется node-postgres, вы можете сгенерировать литерал массива с динамическим SQL, но будьте предельно осторожны с внедрением SQL при этом. Следующий подход является безопасным, поскольку он генерирует строку запроса с параметрами запроса и сглаженным списком параметров, поэтому вы все еще используете поддержку драйвера для параметризованных запросов («подготовленных операторов») для защиты от внедрения SQL:
var stooge_names = ['larry', 'curly', 'moe'];
var offset = 1;
var placeholders = stooge_names.map(function(name,i) {
return '$'+(i+offset);
}).join(',');
client.query("SELECT * FROM stooges WHERE name IN ("+placeholders+")", stooge_names, ...);
Надеюсь, это поможет, так как Google не может найти это