Node-Postgres: Wie wird die Abfrage "WHERE col IN (<dynamische Werteliste>)" ausgeführt?

Ich versuche eine Abfrage wie folgt auszuführen:

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

Das Problem ist, dass die Liste der IDs, nach denen ich filtern möchte, nicht konstant ist und bei jeder Ausführung anders sein muss. Ich müsste mich auch vor den IDs schützen, da sie möglicherweise aus nicht vertrauenswürdigen Quellen stammen, obwohl ich mich vor allem schützen würde, was in einer Abfrage vorkommt, unabhängig von der Vertrauenswürdigkeit der Quelle.

node-postgres scheint ausschließlich mit gebundenen Parametern zu funktionieren:client.query('SELECT * FROM table WHERE id = $1', [ id ]); Dies funktioniert, wenn ich eine bekannte Anzahl von Werten hatte (client.query('SELECT * FROM table WHERE id IN ($1, $2, $3)', [ id1, id2, id3 ])), funktioniert aber nicht direkt mit einem Array:client.query('SELECT * FROM table WHERE id IN ($1)', [ arrayOfIds ]), da es keine spezielle Behandlung von Array-Parametern zu geben scheint.

Das dynamische Erstellen der Abfragevorlage entsprechend der Anzahl der Elemente im Array und das Erweitern des Arrays "ids" in das Array "query parameters" (das in meinem Fall neben der Liste der IDs auch andere Parameter enthält) scheint unangemessen aufwändig zu sein. Das Hardcodieren der Liste der IDs in der Abfragevorlage scheint ebenfalls nicht sinnvoll zu sein, da node-postgres keine Methoden zum Entziehen von Werten bietet.

Dies scheint ein sehr häufiger Anwendungsfall zu sein, daher vermute ich, dass ich tatsächlich etwas übersehe und nicht, dass es nicht möglich ist, das Gemeinsame zu verwendenIN (values) SQL-Operator mit Node-Postgres.

Wenn jemand dieses Problem auf elegantere Weise gelöst hat als die oben aufgeführten, oder wenn mir etwas über Node-Postgres wirklich fehlt, helfen Sie bitte.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage