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

Sta*_*ica 10 javascript pg-promise

我正在尝试在pg-promise的参数数组中传递一系列参数,如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(); 
Run Code Online (Sandbox Code Playgroud)

但是它不起作用,我在参数列表之后返回了"缺失"错误.或者"运算符不存在:整数=整数[]]"错误,如果我将参数替换为:

[1,[1730442]]
Run Code Online (Sandbox Code Playgroud)

当然如果我像这样传递它,它的工作原理:

[1,1730442]
Run Code Online (Sandbox Code Playgroud)

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

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

vit*_*y-t 17

我是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]])
Run Code Online (Sandbox Code Playgroud)

您将获得正确的值列表.

也可以看看: