【问题标题】:node-postgres How to parameterize a dynamic array of strings for an insert query?node-postgres 如何为插入查询参数化动态字符串数组?
【发布时间】: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


    【解决方案1】:

    大家好,以后会看到这个,请使用 pg-format https://www.npmjs.com/package/pg-format

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 2021-10-09
      • 1970-01-01
      相关资源
      最近更新 更多