węzeł-postgres: jak wykonać zapytanie „WHERE col IN (<dynamiczna lista wartości>)”?

Próbuję wykonać zapytanie w ten sposób:

SELECT * FROM table WHERE id IN (1,2,3,4)

Problem polega na tym, że lista identyfikatorów, które chcę filtrować, nie jest stała i musi być inna przy każdym wykonaniu. Musiałbym także uciec od identyfikatorów, ponieważ mogą pochodzić z niezaufanych źródeł, chociaż w rzeczywistości uniknęłbym wszystkiego, co wchodzi w skład zapytania, niezależnie od wiarygodności źródła.

węzeł-postgres wydaje się działać wyłącznie z powiązanymi parametrami:client.query('SELECT * FROM table WHERE id = $1', [ id ]); to zadziała, jeśli będę miał znaną liczbę wartości (client.query('SELECT * FROM table WHERE id IN ($1, $2, $3)', [ id1, id2, id3 ])), ale nie będzie działać bezpośrednio z tablicą:client.query('SELECT * FROM table WHERE id IN ($1)', [ arrayOfIds ]), ponieważ wydaje się, że nie ma specjalnej obsługi parametrów tablicy.

Dynamiczne tworzenie szablonu zapytania w zależności od liczby elementów w tablicy i rozwijanie tablicy ids w tablicy parametrów zapytań (które w moim przypadku również zawierają inne parametry oprócz listy identyfikatorów) wydaje się nieracjonalnie uciążliwe. Twarde kodowanie listy identyfikatorów w szablonie zapytań wydaje się również nieopłacalne, ponieważ węzeł-postgres nie zapewnia żadnych metod ucieczki wartości.

Wydaje się, że jest to bardzo powszechny przypadek użycia, więc zgaduję, że faktycznie coś przeoczyłem, a nie, że nie jest możliwe użycie wspólnegoIN (values) Operator SQL z węzłem-postgres.

Jeśli ktoś rozwiązał ten problem w bardziej elegancki sposób niż te wymienione powyżej, lub jeśli naprawdę brakuje mi czegoś o post-węzłach, proszę o pomoc.

questionAnswers(7)

yourAnswerToTheQuestion