В примере о том, как использовать параметризованные запросы с предложением IN, синтаксис следующий:
const data = [1, 'two', 3, 'four'];
db.any('SELECT * FROM table WHERE id IN ($1:csv)', [data])
.then(data => {
...
Кажется, я не могу заставить это работать для именованных параметров:
db.manyOrNone('SELECT widget FROM widgets WHERE id IN ($(ids:list))',
{ ids: [1, 2, 3] })
(Я использую :list
, так как он кажется взаимозаменяемым с :csv
). Я пробовал различные комбинации, такие как:
($(ids):list)
(синтаксическая ошибка рядом с ":")(${ids:list})
(синтаксическая ошибка рядом с "$")
Я продолжаю получать недопустимые синтаксические ошибки от Postgres. Это поддерживается? Или мне нужно передать параметры в виде массива и ссылаться на них, как в примере?
Версии:
- Постгрес: 9.5.7
- pg-обещание: 5.7.1
ОБНОВЛЕНИЕ Я изменил свой параметр на ... WHERE widget IN ($(ids:csv))...
, и теперь он работает. Похоже, что :list
и :csv
не взаимозаменяемы.