我有一个带有在Heroku上运行的postgresql数据库的node.js应用程序,由于某种原因,select
函数似乎打破并在许多成功尝试之后开始失败,这似乎完全没有理由......
示例代码:
pg.connect(database_url, function(err, client) {
if(client) {
var date = new Date();
var query = client.query('SELECT * FROM accounts',function(err, result) {
if(!err) {
res.send(JSON.stringify(result.rows));
accounts = JSON.stringify(result.rows);
} else {
res.send('failed');
}
});
} else {
res.send(JSON.stringify(err));
}
});
上面的代码完美地运行了大约10次,然后突然冒出来。
我该如何解决这个问题?
答案 0 :(得分:1)
如果它工作10次,并且在11日失败,则可能是因为连接池已用完。
完成请求后,您应该在代码中调用done
,将数据库连接发送回池中。
pg.connect(database_url, function(err, client, done) {
if(client) {
var date = new Date();
var query = client.query('SELECT * FROM accounts',function(err, result) {
if(!err) {
res.send(JSON.stringify(result.rows));
accounts = JSON.stringify(result.rows);
} else {
res.send('failed');
}
done(); // call done to close the conection
});
} else {
res.send(JSON.stringify(err));
}
});