使用参数化查询在 nodejs 中返回 Postgres 结果
Returning Postgres result in nodejs with parameterized query
如何在 Nodejs 中使用参数化查询 return 结果?
如果我删除 RETURNING*
,查询运行正常
现在,服务器return出现这个错误
error: syntax error at or near "RETURNING"
server.js
const text = "UPDATE users SET info = JSONB_SET(info, '{geometry,coordinates}', '"+coords+"') WHERE id= RETURNING*";
const values = [id];
pool.query(text, values, (err, res) => {
if (err) {
//log errors
console.log(err.stack);
//return error to client
} else {
//success
//console.log(res.rows);
}
});
要在节点上使用 postgres 参数化查询,正确的方法是使用 promise 语法。在 Github here and here.
上提出了类似的问题
我在问题中使用的语法似乎存在问题,因为 pg 正在读取 $1 作为文字字符串的一部分而不是占位符,因为它用引号引起来。
Promise 语法似乎可以解决这个问题。嗯,适合我。
更新查询
const queryOpts = {
text: "UPDATE users SET info = jsonb_set(info, '{geometry,coordinates}', ) WHERE id = ",
values: [coords, userid]
}
pool.query(queryOpts).then(response => {
console.log(response.rows)
}).catch(error => {
console.log(error)
})
SELECT查询
var email = JSON.stringify(logins.email);
const queryOpts = {
text: "SELECT * FROM users WHERE info -> 'email'=",
values: [email]
}
pool.query(queryOpts).then(response => {
console.log(response.rows)
}).catch(error => {
console.log(error)
})
如何在 Nodejs 中使用参数化查询 return 结果?
如果我删除 RETURNING*
现在,服务器return出现这个错误
error: syntax error at or near "RETURNING"
server.js
const text = "UPDATE users SET info = JSONB_SET(info, '{geometry,coordinates}', '"+coords+"') WHERE id= RETURNING*";
const values = [id];
pool.query(text, values, (err, res) => {
if (err) {
//log errors
console.log(err.stack);
//return error to client
} else {
//success
//console.log(res.rows);
}
});
要在节点上使用 postgres 参数化查询,正确的方法是使用 promise 语法。在 Github here and here.
上提出了类似的问题我在问题中使用的语法似乎存在问题,因为 pg 正在读取 $1 作为文字字符串的一部分而不是占位符,因为它用引号引起来。
Promise 语法似乎可以解决这个问题。嗯,适合我。
更新查询
const queryOpts = {
text: "UPDATE users SET info = jsonb_set(info, '{geometry,coordinates}', ) WHERE id = ",
values: [coords, userid]
}
pool.query(queryOpts).then(response => {
console.log(response.rows)
}).catch(error => {
console.log(error)
})
SELECT查询
var email = JSON.stringify(logins.email);
const queryOpts = {
text: "SELECT * FROM users WHERE info -> 'email'=",
values: [email]
}
pool.query(queryOpts).then(response => {
console.log(response.rows)
}).catch(error => {
console.log(error)
})