【发布时间】:2022-04-12 03:53:27
【问题描述】:
我一直很难弄清楚如何将具有动态长度的数组放入 pg nodejs 库中的参数化查询中。我尝试了几种不同的方法,但似乎都没有奏效。
例如,这是我尝试使用的示例查询对象:
{
text: 'INSERT INTO schema.table (userid,name,columns,sort,notification) VALUES ($1)',
values: [ ['testuser', 'testname', null, null, 'on'] ]
}
我在文档中读到我可以使用$1 字符作为一种通配符,它现在应该能够动态地计算数组中值的数量。但这似乎永远行不通,我在运行client.query(query.text, query.values 时总是返回以下错误:
error: INSERT has more target columns than expressions
尽管可以清楚地看到有 5 列和 5 个值。我也尝试过使用$1::TEXT[],但还是没有用,还是同样的错误。
根据这个post,我一直在尝试的方法应该有效,但它没有。
有谁知道我该如何解决这个问题?我需要使用参数化查询,以便 pg 经常转义和清理来自用户输入的数据。我可以做一些像value.map((col, i) => "$"+(i+1)).join(","); 这样厚颜无耻的事情,并将其用作占位符,但我真的不想这样做,而且我的代码中有些地方它不会真正起作用,因为我动态地形成了很多我的查询.
感谢您的帮助,谢谢。
【问题讨论】:
标签: javascript node.js postgresql node-postgres