#node.js #postgresql
Вопрос:
Ниже приведена моя база кода с запросом
export const getQuery = (idList) =gt; { return `SELECT * from glacier_restore_progress where id in ${idList}`; } const query = getQuery('(1,2)'); dbResponse = await pool.query(query) ...
это прекрасно работает. Но проблема с Sql-инъекцией возникает с моего сервера гидролокатора. Поэтому я попробовал изменить приведенный ниже код, но это не сработало,
... dbResponse = await pool.query('SELECT * from glacier_restore_progress where id in $1', ['(1,2)']);
Что я здесь упускаю?
Ответ №1:
Лучшее решение использует функцию ANY с принуждением массива Postgres. Это позволяет сопоставить столбец с произвольным массивом значений, как если бы вы написали col В (v1, v2, v3). Таков подход в ответе перо.
SELECT * FROM glacier_restore_progress WHERE id = ANY($1::int[])
dbResponse = await pool.query('SELECT * FROM glacier_restore_progress WHERE id = ANY($1::int[])', [[1,2, ...]]);