node-postgres 如何为插入查询参数化动态字符串数组?
node-postgres How to parameterize a dynamic array of strings for an insert query?
我一直在努力弄清楚如何将具有动态长度的数组放入 pg nodejs 库中的参数化查询中。我尝试了几种不同的方法,但其中 none 似乎有效。
例如,这是我尝试使用的示例查询对象:
{
text: 'INSERT INTO schema.table (userid,name,columns,sort,notification) VALUES ()',
values: [ ['testuser', 'testname', null, null, 'on'] ]
}
我在文档中读到我可以使用 </code> 字符作为一种通配符,它现在应该能够动态地改变数组中值的数量。但这似乎从来没有奏效,我总是在 运行 <code>client.query(query.text, query.values
:
时返回以下错误
error: INSERT has more target columns than expressions
尽管可以清楚地看到有5列和5个值。我也尝试过使用 ::TEXT[]
,但还是没有用,还是同样的错误。
根据这个,我一直在尝试的方法应该有效,但一直没有成功。
有谁知道我该如何解决这个问题?我需要使用参数化查询,以便 pg 转义和清理数据,因为它经常来自用户输入。我可以做一些厚颜无耻的事情,比如 value.map((col, i) => "$"+(i+1)).join(",");
并将其用于占位符,但我真的不想这样做,而且我的代码中有些地方它不会真正起作用,因为我动态形成了很多我的查询。
感谢任何帮助,谢谢。
嗨,以后看到这个的人,请使用 pg-format
https://www.npmjs.com/package/pg-format
我一直在努力弄清楚如何将具有动态长度的数组放入 pg nodejs 库中的参数化查询中。我尝试了几种不同的方法,但其中 none 似乎有效。
例如,这是我尝试使用的示例查询对象:
{
text: 'INSERT INTO schema.table (userid,name,columns,sort,notification) VALUES ()',
values: [ ['testuser', 'testname', null, null, 'on'] ]
}
我在文档中读到我可以使用 </code> 字符作为一种通配符,它现在应该能够动态地改变数组中值的数量。但这似乎从来没有奏效,我总是在 运行 <code>client.query(query.text, query.values
:
error: INSERT has more target columns than expressions
尽管可以清楚地看到有5列和5个值。我也尝试过使用 ::TEXT[]
,但还是没有用,还是同样的错误。
根据这个
有谁知道我该如何解决这个问题?我需要使用参数化查询,以便 pg 转义和清理数据,因为它经常来自用户输入。我可以做一些厚颜无耻的事情,比如 value.map((col, i) => "$"+(i+1)).join(",");
并将其用于占位符,但我真的不想这样做,而且我的代码中有些地方它不会真正起作用,因为我动态形成了很多我的查询。
感谢任何帮助,谢谢。
嗨,以后看到这个的人,请使用 pg-format https://www.npmjs.com/package/pg-format