Node.js Nodejs-Postgres-Notify-Error绑定消息
我正在使用(v-6.1.2) 这是我正在重构的代码,因为查询中存在未参数化的参数。这是我没有写的代码 我有以下函数Node.js Nodejs-Postgres-Notify-Error绑定消息,node.js,postgresql,notify,node-postgres,Node.js,Postgresql,Notify,Node Postgres,我正在使用(v-6.1.2) 这是我正在重构的代码,因为查询中存在未参数化的参数。这是我没有写的代码 我有以下函数publish,其中pubClient是 new pg.Client(pubsubUri).connect((err, client) => { if(err) return logger.error('database-connect', err.message) pubClient = client }) 运行publish时,出现以下错误: 错误:绑定
publish
,其中pubClient
是
new pg.Client(pubsubUri).connect((err, client) => {
if(err) return logger.error('database-connect', err.message)
pubClient = client
})
运行publish
时,出现以下错误:
错误:绑定消息提供了2个参数,但准备好的语句“”需要0
这是我的发布方法:(type和message都是string类型)
我不知道查询的正确语法是什么,也不知道为什么会出现这个错误
任何帮助都将不胜感激
NOTIFY channel [ , payload ]
无法参数化通道。尝试使用pg_notify:
let publish = (type, message) => {
if (pubClient) {
pubClient.query('SELECT pg_notify($1, $2)', [type, message], (err, res) => {
if (err) {
console.log(err)
return
}
return true
})
}
return false
}
您如何调用
publish
?您返回的true
和false
也不正确。这是异步编程,您需要使用true
或false
进行回调,我知道。这是我正在重构的代码(我没有编写)。它实际上是同步运行的。我只是添加了回调来查看错误是什么,因为publish
被称为publish('HELLO',{“payload”:{….})
一定是查询字符串出错了。看起来也很奇怪,就是这样!谢谢在文档中,它在哪里说通道不能参数化?在文档中,它没有说。但您可以从示例查询notifytest中看到“test”代码>第一个参数不是字符串,而是标识符,因此无法绑定。表名也会发生同样的情况——不能绑定它们。pg_倾听应该有用。
let publish = (type, message) => {
if (pubClient) {
pubClient.query('SELECT pg_notify($1, $2)', [type, message], (err, res) => {
if (err) {
console.log(err)
return
}
return true
})
}
return false
}