Abd*_*naf 11 sql postgresql node.js
我需要在这样的单个语句中执行插入和删除查询
INSERT INTO COMPANY (ID,NAME) VALUES (1, 'Paul');DELETE FROM COMPANY WHERE ID='12';
Run Code Online (Sandbox Code Playgroud)
这是我用于执行查询的 node.js 代码
pg.connect(pgConString, function (err, client, done) {
if (err) {
callBack("DB connection failed. " + err, null);
return;
}
var query = client.query({
text: "INSERT INTO COMPANY (ID,NAME) VALUES (1, 'Paul');DELETE FROM COMPANY WHERE ID='12';"
values: [1, "Poul1"],
name: "insertQuery"
});
query.on("error", function (err) {
callBack("DB insertion failed. Error Message: " + err, null);
return;
});
query.on('end', function (result) {
done();
return;
});
});
Run Code Online (Sandbox Code Playgroud)
我收到这样的错误信息
错误:无法在准备好的语句中插入多个命令
是否可以使用 node.js 在 postgresql 数据库中执行多个查询?
尽管有一个公认的答案,但它有点过时了。目前,node-postgres 在一次调用中处理多个查询,并向您返回一个整洁的小数组,例如:
const db.query('select 1; select 2; select 3;')
results.map(r => (r.rows[0]['?column?']))
// [ 1, 2, 3 ]
Run Code Online (Sandbox Code Playgroud)
还有一个替代的“自以为是”库,称为pg-promisesql
,它也可以在一次调用中接受查询链,并且也可以处理文件。
尝试这样
pg.connect(pgConString, function (err, client, done) {
if (err) {
callBack("DB connection failed. " + err, null);
return;
}
client.query({
text: "INSERT INTO COMPANY (ID,NAME) VALUES (1, 'Paul');",
values: [1, "Poul1"],
name: "insertQuery"
});
client.query({
text: "DELETE FROM COMPANY WHERE ID='12';",
name: "deleteQuery"
});
client.on("error", function (err) {
callBack("DB insertion failed. Error Message: " + err, null);
return;
});
});
Run Code Online (Sandbox Code Playgroud)