Está descrito no FAQ do node-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
Como eu construo uma consulta WHERE foo IN (...) para encontrar linhas que correspondam a um array de valores? node-postgres suporta o mapeamento de arrays JavaScript simples para arrays PostgreSQL, então na maioria dos casos você pode simplesmente passá-lo como qualquer outro parâmetro.
client.query("SELECT * FROM stooges WHERE name = ANY ($1)", [ ['larry', 'curly', 'moe'] ], ...);
Observe que =ANY é outra maneira de escrever IN (...), mas, diferentemente de IN (...), funcionará como você esperaria ao passar uma matriz como parâmetro de consulta.
Se você souber o comprimento do array com antecedência, poderá achatá-lo em uma lista IN:
// passing a flat array of values will work:
client.query("SELECT * FROM stooges WHERE name IN ($1, $2, $3)", ['larry', 'curly', 'moe'], ...);
... mas há pouco benefício quando =ANY funciona com uma matriz JavaScript.
Se você estiver em uma versão antiga do node-postgres ou precisar criar arrays PostgreSQL mais complexos (arrays de tipos compostos, etc.) com os quais o node-postgres não está lidando, você pode gerar um literal de array com SQL dinâmico, mas tenha muito cuidado com a injeção de SQL ao fazer isso. A abordagem a seguir é segura porque gera uma string de consulta com parâmetros de consulta e uma lista de parâmetros achatada, então você ainda está usando o suporte do driver para consultas parametrizadas ("declarações preparadas") para proteger contra injeção de 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, ...);
Espero que ajude, pois o google não consegue encontrar isso