node-postgres: cómo ejecutar la consulta "WHERE col IN (<lista de valores dinámicos>)"?

Estoy tratando de ejecutar una consulta como esta:

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

El problema es que la lista de identificadores contra los que quiero filtrar no es constante y debe ser diferente en cada ejecución. También necesitaría escapar de los identificadores, ya que pueden provenir de fuentes no confiables, aunque en realidad podría escapar de cualquier cosa que se presente en una consulta, independientemente de la confiabilidad de la fuente.

node-postgres parece funcionar exclusivamente con parámetros enlazados:client.query('SELECT * FROM table WHERE id = $1', [ id ]); esto funcionará si tuviera un número conocido de valores (client.query('SELECT * FROM table WHERE id IN ($1, $2, $3)', [ id1, id2, id3 ])), pero no funcionará con una matriz directamente:client.query('SELECT * FROM table WHERE id IN ($1)', [ arrayOfIds ]), ya que no parece haber ningún manejo especial de los parámetros de matriz.

Crear la plantilla de consulta dinámicamente según el número de elementos en la matriz y expandir la matriz de ids en la matriz de parámetros de consulta (que en mi caso real también contiene otros parámetros además de la lista de ids) parece irrazonablemente oneroso. La codificación de la lista de identificadores en la plantilla de consulta tampoco parece viable, ya que node-postgres no proporciona ningún método de escape de valores.

Esto parece ser un caso de uso muy común, así que supongo que en realidad estoy pasando por alto algo, y no es que no sea posible usar lo comúnIN (values) Operador SQL con nodo-postgres.

Si alguien ha resuelto este problema de una manera más elegante que las que mencioné anteriormente, o si realmente me estoy perdiendo algo acerca de node-postgres, por favor ayuda.

Respuestas a la pregunta(7)

Su respuesta a la pregunta