如何在带有JavaScript节点的SQL中使用数组进行插入?
我有个问题。我有一个数组,我希望每个元素都是列中的一行 例如: 我的数组:constmyarray=['A','B','C','D'] 结果是:如何在带有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]+
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应该包含的内容。对于整个套件,所有插入对都应额外使用()
进行包装。