【发布时间】:2018-06-22 04:12:55
【问题描述】:
我目前正在更新一个非常旧的应用程序以在 Heroku 上运行。我必须更新到最新版本的 pg 以支持 heroku 上最新的 postgres。然而,这最初是抽象出来的,所以它都在一个文件中处理(如下)。我可以成功连接到数据库,但client.query 永远不会返回。
第一个console.log 是SELECT * FROM public.user WHERE "email" = $1 [ 'xx@xx.com' ]。但是,我从未达到第二个console.log。我没有收到任何连接错误。
我正在使用 pg 7.x 和 postgres 10。
有什么想法吗?
const { Client } = require('pg');
const config = require('.././app/models/config.js');
const client = new Client({
connectionString: process.env.DATABASE_URL || config.database || ''
});
var conString = config.database || '';
client.connect();
module.exports = {
query: function(text, values, cb) {
console.log(text, values);
client.query(text, values, function(err, result) {
console.log(err, result);
if (err) {
console.log(err);
}
if (cb) {
cb(err, result);
}
client.end();
});
}
};
【问题讨论】:
-
你有没有弄清楚问题出在哪里?我使用的是 Promise 而不是回调,但看到了同样的问题 - Promise 永远不会得到解决,所以
await client.query()的行为就像函数永远不会返回一样。 -
嘿@Malvineous,这里也一样,虽然这取决于我运行相同代码的服务器。你找到解决办法了吗?
-
@StéphanedeLuca 我有一段时间没有遇到这个问题,但我认为许多
pg版本与最近的 NodeJS 版本存在这样的不兼容性。现在,每当我遇到这样的奇怪问题时,我都会更新pg模块并且它会消失(或者我确保我正在运行一个落后于最新 NodeJS 版本的模块,如果pg模块尚未更新新的 NodeJS 版本)。 -
我也有同样的问题。
标签: node.js postgresql heroku