我正在尝试构建一个实时网页并使用postgreSQL作为我的数据库。我使用node.js和express来构建后端的东西。由于这是一个实时网页,需要经常更新信息,我与postgreSQL建立了长期联系,看起来像:
app.get('/:A/:B', function(req,res){
var A = req.params.A;
var B = req.params.B;
var client = new pg.Client(config[A][B]);
client.connect(function(err){
if (err) {
console.log("Error occurred when try to connect the database",err);
}
else {
console.log("Connected to the database");
}
});
Do some queries with current database connection...
}
问题是,当我在浏览器中更改A和B的值并尝试连接到新数据库时,我没有与旧数据库断开连接,因此我的页面上的信息仍然来自旧数据库。我是节点和Web开发的新手。当客户端尝试转到新网址时,有人能告诉我如何与旧数据库断开连接吗?
答案 0 :(得分:0)
我认为不是为每个请求创建连接的好方法。如果A-B变体的大小有限,那么在启动时创建连接池会更好。
app.get('/:A/:B', function(req, res, next){ // next to forwarding error
var A = req.params.A;
var B = req.params.B;
var client = new pg.Client(config[A][B]);
client.connect(function(err){
if (err)
return next(err); // go to error-middleware
console.log("Connected to the database");
// Do some queries with current database connection...
// Keep it mind that they're also asynchronous, so better way is use promises or async (https://github.com/caolan/async)
client.end(function (err) {
if (err)
next(err);
});
});
}
// Error middleware
app.use(function(err, req, res, next) {
console.log(req.url, err.message);
})