node.js - NodeJS、pg-promise 和数组作为参数
问题描述
运行NodeJS
和pg-promise
。
我有一个数组:
let my_array = new array('x', 'y', 'z');
我正在尝试将此作为参数传递给我的PostgreSQL
查询pg-promise
:
db_webhooks.any('SELECT cars FROM my_cars WHERE id IN ($1)', [my_array])
.then...
但它因类型错误而失败。我试过.join
数组,但也得到错误,因为它导致字符串'x,y,z'
而不是'x','y','z'
.
打印出调用的调试/查询给了我:
QUERY: SELECT cars FROM my_cars WHERE id IN (array['x','y','z'])
这应该是:
QUERY: SELECT cars FROM my_cars WHERE id IN ('x','y','z')
解决方案
该库为此目的支持CSV 过滤器:
await db.any('SELECT cars FROM my_cars WHERE id IN ($1:csv)', [my_array])
/*=> SELECT cars FROM my_cars WHERE id IN ('x', 'y', 'z') */
或者您可以使用:list
,这是相同的:
await db.any('SELECT cars FROM my_cars WHERE id IN ($1:list)', [my_array])
/*=> SELECT cars FROM my_cars WHERE id IN ('x', 'y', 'z') */
推荐阅读
- ruby-on-rails - 包含的子查询上的 Active Record 选择字段
- azure - 使用 terraform 从规模集中删除实例
- ruby-on-rails - Rails NameError 'uninitialized constand User::Events' 使用设计
- php - 如何在 PHP 中多次运行脚本
- c# - 根据公共变量组合来自 2 个对象列表的值
- python - 在 Windows 10 中将标签添加到 python 文件
- node.js - 如何使用 PNPM 在两个节点项目之间共享 node_modules?
- python-3.x - 可执行文件立即以“NotImplementedError”关闭
- vue.js - 如何从所选选项的兄弟姐妹中获取值并将其作为输入字段自动填充(VueJS)中的值传递
- python - 对目录中的所有excel文件执行python脚本