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