Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在带有JavaScript节点的SQL中使用数组进行插入?_Javascript_Sql_Node.js_Postgresql_Node Postgres - Fatal编程技术网

如何在带有JavaScript节点的SQL中使用数组进行插入?

如何在带有JavaScript节点的SQL中使用数组进行插入?,javascript,sql,node.js,postgresql,node-postgres,Javascript,Sql,Node.js,Postgresql,Node Postgres,我有个问题。我有一个数组,我希望每个元素都是列中的一行 例如: 我的数组:constmyarray=['A','B','C','D'] 结果是: Column1 | ----------------------------------------- A | B | C | D | 我正在将Node.js与库Node postgres一起使用: var queryString=“插入测试(id)值(“+””+[myArray]+

我有个问题。我有一个数组,我希望每个元素都是列中的一行

例如:

我的数组:constmyarray=['A','B','C','D']

结果是:

Column1 | 
-----------------------------------------
    A   |  
    B   |  
    C   |  
    D   |  
我正在将
Node.js
与库
Node postgres
一起使用:

var queryString=“插入测试(id)值(“+””+[myArray]+“+”)返回*”;
连接池((错误、客户端、完成)=>{
如果(错误){
完成();
console.log(错误)
返回res.status(500).json({
成功:错,
数据:错误
})
}
查询(查询字符串,(错误,结果)=>{
完成();
});

})
我想这就是你想要的:

var queryString = `INSERT INTO test (id) VALUES ("${myArray.join('"),("')}") RETURNING *`
i、 e

在返回的测试(id)值((“A”)、(“B”)、(“C”)、(“D”)中插入*

更好的解决方案是使用查询参数:

var queryString = `INSERT INTO test (id) VALUES (${myArray.map((v,i) => `$${i+1}`).join('),(')}) RETURNING *`
i、 e

在测试(id)中插入返回的值($1),($2),($3),($4))*

然后像这样使用它:

client.query(queryString, myArray, (err, result) => {
  done();
});

我想这就是你想要的:

var queryString = `INSERT INTO test (id) VALUES ("${myArray.join('"),("')}") RETURNING *`
i、 e

在返回的测试(id)值((“A”)、(“B”)、(“C”)、(“D”)中插入*

更好的解决方案是使用查询参数:

var queryString = `INSERT INTO test (id) VALUES (${myArray.map((v,i) => `$${i+1}`).join('),(')}) RETURNING *`
i、 e

在测试(id)中插入返回的值($1),($2),($3),($4))*

然后像这样使用它:

client.query(queryString, myArray, (err, result) => {
  done();
});

嗯!我相信这应该在某个地方被问到。但不管怎样。。您应该有一个如下所示的代码。-只需将多个插入值添加为嵌套数组:

    var queryString = "INSERT INTO test (id) VALUES ($1) RETURNING *";
    var values = [['A'],['B'],['C'],['D']]
当你来到客户查询时

   client.query(queryString, values, (err, result) => ...

嗯!我相信这应该在某个地方被问到。但不管怎样。。您应该有一个如下所示的代码。-只需将多个插入值添加为嵌套数组:

    var queryString = "INSERT INTO test (id) VALUES ($1) RETURNING *";
    var values = [['A'],['B'],['C'],['D']]
当你来到客户查询时

   client.query(queryString, values, (err, result) => ...

您好,还是一样:(@muistooshort是的,您是对的-查询参数将是一个更好的解决方案-我更新了我的应答器
${myArray.map((v,I)=>`($${I+1})`)。如果
('),(')
看起来像是盯着您看的;)我已将其更正为正确的SQL应该包含的内容。对于整个集合,插入对都应该用
()
进行额外包装。您好,还是一样:(@muistooshort是的,您是对的-查询参数将是一个更好的解决方案-我更新了我的应答器
${myArray.map((v,I)=>`($$${I+1}`)。如果
(',(')
看起来它在盯着您;)我已将其更正为正确的SQL应该包含的内容。对于整个套件,所有插入对都应额外使用
()
进行包装。