【发布时间】:2018-04-05 18:12:20
【问题描述】:
我正在使用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 时出现以下错误:
error: bind message supplies 2 parameters, but prepared statement "" requires 0
这是我的发布方法:(类型和消息都是字符串类型)
let publish = ( type, message) => {
if (pubClient) {
pubClient.query('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": {....}}) -
一定是查询字符串搞砸了。它看起来也很奇怪。
标签: node.js postgresql notify node-postgres