В примере использования параметризованных запросов с предложением 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. Это поддерживается? Или я должен передать параметры в виде массива и ссылаться на них, как в примере?
Версии:
- Postgres: 9,5,7
- pg-обещание: 5.7.1
UPDATE
Я изменил свой параметр на ... WHERE widget IN ($(ids:csv))...
, и теперь он работает, поэтому кажется, что :list
и :csv
не взаимозаменяемы.