Описано е в ЧЗВ на 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
Как да създам 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'], ...);
... но има малка полза, когато =ANY работи с 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 не успява да намери това