【发布时间】:2016-11-27 04:51:44
【问题描述】:
我正在使用 Heroku Postgres,每次在我的应用程序中运行查询时,连接都会保持打开状态。这会导致同时连接过多,从而导致错误。
在部署时,在我使用我的应用程序一段时间后,我得到了这个错误:
{"name":"error","length":109,"severity":"FATAL","code":"53300","file":"miscinit.c","line":"551","routine":"InitializeSessionUserId"}
当我在本地运行时出现此错误:
{"name":"error","length":109,"severity":"FATAL","code":"53300","file":"miscinit.c","line":"551","routine":"InitializeSessionUserId"}
这是我每次需要查询数据库时处理查询的方式:
router.route('/campaigns')
.get(restrictTo('advertiser'), function(req, res) {
pg.defaults.ssl = true;
pg.connect(`DATABASE_URL`, function(err, client, done) {
if (err) {
console.log('Connection issue when retrieving data, error will be thrown: ' + JSON.stringify(err));
throw err;
} else {
client.query(`SELECT * FROM campaign WHERE agentid = ${req.user.agentid};`,
function (err, result) {
if(err)
console.log(err.toString());
res.render('console/campaigns', result);
});
}
})
})
我做错了什么,因为我相信连接没有关闭。我该如何解决?
【问题讨论】:
-
如果你使用pg-promise,你永远不会遇到这种问题,因为你根本不需要手动连接。
-
是的,我就是这么做的,但我花了一整天的时间才弄明白。
-
@vitaly-t 我有一个关于
pg-promise的问题:stackoverflow.com/questions/38545958/return-in-pg-promise
标签: node.js postgresql express heroku heroku-postgres