node-postgres: como executar a consulta “WHERE col IN (<dynamic value list>)”?

Estou tentando executar uma consulta como esta:

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

O problema é que a lista de IDs que eu quero filtrar não é constante e precisa ser diferente a cada execução. Eu também precisaria escapar dos ids, porque eles podem vir de fontes não confiáveis, embora eu realmente escape de qualquer coisa que vá em uma consulta, independentemente da confiabilidade da fonte.

O node-postgres parece funcionar exclusivamente com parâmetros vinculados:client.query('SELECT * FROM table WHERE id = $1', [ id ]); isso funcionará se eu tivesse um número conhecido de valores (client.query('SELECT * FROM table WHERE id IN ($1, $2, $3)', [ id1, id2, id3 ])), mas não funcionará diretamente com um array:client.query('SELECT * FROM table WHERE id IN ($1)', [ arrayOfIds ]), como não parece haver nenhum tratamento especial de parâmetros de matriz.

Construir o modelo de consulta dinamicamente de acordo com o número de itens na matriz e expandir a matriz de ids para a matriz de parâmetros de consulta (que no meu caso real também contém outros parâmetros além da lista de ids) parece excessivamente onerosa. Codificar a lista de IDs no modelo de consulta também não é viável, já que o postgres de nó não fornece nenhum método de escape de valor.

Este parece ser um caso de uso muito comum, então meu palpite é que estou realmente ignorando alguma coisa, e não que não seja possível usar o recurso comum.IN (values) Operador SQL com postgres de nó.

Se alguém resolveu este problema de uma maneira mais elegante do que as que listei acima, ou se estou realmente sentindo falta de algo sobre o postgres de nós, por favor ajude.

questionAnswers(7)

yourAnswerToTheQuestion