Jest to opisane w często zadawanych pytaniach o node-postgres https://github.com/brianc/node-postgres/wiki/FAQ#11-jak- zrób-i-buduj-gdzie-foo-w-zapytanie, aby znaleźć-wiersze-dopasowane-do-tablicy-wartości
Jak zbudować zapytanie WHERE foo IN (...), aby znaleźć wiersze pasujące do tablicy wartości? node-postgres obsługuje mapowanie prostych tablic JavaScript na tablice PostgreSQL, więc w większości przypadków możesz po prostu przekazać je jak każdy inny parametr.
client.query("SELECT * FROM stooges WHERE name = ANY ($1)", [ ['larry', 'curly', 'moe'] ], ...);
Zauważ, że =DOWOLNY to inny sposób na napisanie IN (...), ale w przeciwieństwie do IN (...) będzie działał tak, jak oczekiwałeś, gdy przekażesz tablicę jako parametr zapytania.
Jeśli znasz wcześniej długość tablicy, możesz ją spłaszczyć do listy IN:
// passing a flat array of values will work:
client.query("SELECT * FROM stooges WHERE name IN ($1, $2, $3)", ['larry', 'curly', 'moe'], ...);
... ale jest niewielka korzyść, gdy =ANY działa z tablicą JavaScript.
Jeśli korzystasz ze starej wersji node-postgres lub potrzebujesz stworzyć bardziej złożone tablice PostgreSQL (tablice typów złożonych itp.), z którymi node-postgres nie radzi sobie, możesz wygenerować literał tablicy za pomocą dynamicznego SQL, ale bądź bardzo ostrożny podczas wstrzykiwania SQL. Poniższe podejście jest bezpieczne, ponieważ generuje ciąg zapytania z parametrami zapytania i spłaszczoną listą parametrów, więc nadal korzystasz ze wsparcia sterownika dla zapytań parametrycznych („przygotowane instrukcje”) w celu ochrony przed wstrzyknięciem 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, ...);
Mam nadzieję, że to pomoże, ponieważ Google nie może tego znaleźć