gpt4 book ai didi

javascript - 在参数数组中传递一个整数数组

转载 作者:可可西里 更新时间:2023-11-01 02:33:07 24 4
gpt4 key购买 nike

我正在尝试按照 pg-promise docs 中的建议在 pg-promise 的参数数组中传递一个参数数组.

db.any("SELECT fieldname FROM table WHERE fieldname = $1 AND fieldname2 IN ($2)",
[1,[[1730442],[1695256]],[487413],[454336]]])
.then(function (data) {
console.log("DATA:", data); // print data;
})
.catch();

但它不起作用,我返回了“参数列表后缺少 )”错误。或者“运算符不存在:integer = integer[]]”错误,如果我将参数替换为:

[1,[1730442]]

当然,如果我这样传递它,它就可以工作了:

[1,1730442]

当涉及到其他参数时,这是传递值数组的正确方法吗?

我还尝试删除 $2 周围的括号,但没有成功。

最佳答案

我是 pg-promise 的作者.


你的例子有些困惑......

您在查询中仅使用了两个变量,但传入了四个值:

  • 1
  • [[1730442],[1695256]]
  • [487413]
  • [454336]

并且您的语法没有有效的 JavaScript,因为您最终使用的是 ] 而没有匹配的开头,因此很难理解您要传递的到底是什么中。

然后为什么要再次将所有值包装在数组中?我相信这只是您希望在 IN() 语句中包含的整数列表。

当您想在 WHERE IN() 中使用值时,它实际上并不是您要传入的那些值的数组,而是一个以逗号分隔的值列表。

如果您将示例更改为以下内容:

db.any('SELECT fieldname FROM table WHERE fieldname = $1 AND fieldname2 IN ($2:csv)',
[1, [1730442,1695256,487413,454336]])

您将获得正确的注入(inject)值列表。

另见:

关于javascript - 在参数数组中传递一个整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36839753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com