[NodeJS]node-postgresでWHEREのINにArrayを簡単に指定する方法
node-postgresでWHEREのINにArrayを指定したくても、普通にやったところでエラーが帰ってくるだけで正常に動きません。
とエラーが返ってくるだけです。invalid input syntax
const items = [1, 2, ...];
client.query(`SELECT * FROM bar WHERE id IN ($1)`, [items]);
// エラーが返ってくる
{ error: invalid input syntax for integer: "{"1","2", ...}"
今回はnode-postgresでWHEREのINにArrayを簡単に指定する方法を書きます。
簡単な解決方法
INの代わりにANYを使いましょう。
const items = [1, 2, ...];
client.query(`SELECT * FROM bar WHERE id = ANY ($1)`, [items]);
INと違って、ANYの前に「=」が入るのを注意してください。
もしVersion問題などでどうしても「IN」が使いたい場合は、公式ページのFAQを見てみてください。
参考
本件に関する公式のFAQ: https://github.com/brianc/node-postgres/wiki/FAQ#11-how-do-i-build-a-where-foo-in--query-to-find-rows-matching-an-array-of-values
node-postgres公式: https://node-postgres.com/
ディスカッション
コメント一覧
まだ、コメントがありません