Я хотел бы получить результат запроса с использованием rowMode="array" (поскольку это потенциально очень большая таблица, и я не хочу, чтобы она форматировалась в формат объекта), но я не мог понять, как передать массив Параметр /list для использования в операторе IN.
const events = await t.manyOrNone({text: `select * from svc.events where user_id in ($1:list);`, rowMode: "array"}, [[1,2]]);
Однако приведенное выше дает ошибку: синтаксическая ошибка в или около ":"
Удаление :list тоже не сработало:
const events = await t.manyOrNone({text: `select * from svc.events where user_id in ($1);`, rowMode: "array"}, [[1,2]]);
Ошибка: недопустимый синтаксис ввода для целого числа: "{"1","2"}"
Я понимаю, что это может быть из-за того, что я вынужден использовать формат ParameterizedQuery для rowMode="array", который не допускает таких шикарных модификаторов, как :list, но тогда это приводит к вопросу: если бы я использовал формат ParameterizedQuery, то как мне изначально передать массив Javascript, чтобы он был приемлем для драйвера?
Я предполагаю, что альтернативная формулировка этого вопроса: как использовать массивы в качестве параметров для ParameterizedQuery или PreparedStatements...
how do I use arrays as parameters for ParameterizedQuery or PreparedStatements...
- это был бы правильный вопрос, потому что их использование действительно заставляет форматировать запрос на стороне сервера, поэтому вы не можете использовать такие вещи, как фильтры форматирования. Но вам не нужно использоватьrowMode
, есть лучшие способы обработки больших таблиц, вот что вам следует искать. - person vitaly-t   schedule 28.05.2020select * from users where user_id in ($1)
, где $1 — это массив Javascript. Я не могу понять это! Или я застрял с использованием форматирования запроса на стороне сервера? Большое спасибо за ваше время. - person Andrew Ooi   schedule 30.05.2020