2013-04-13 72 views
4

我在我的应用程序中使用了node-postgres。 我想知道我想要遵循的最佳实践以确保稳定的连接。来自node.js的postgres连接

以下是我现在使用的代码,

exports.getAll = function (args, callback) { 
helper.client = new pg.Client('tcp://postgres:system6:[email protected]/abc_dev'); 
helper.client.connect(); 
helper.client.query('select count(1) as total_records from facilities', function(err,response){ 
    helper.client.query('select * ,'+response.rows[0].total_records+' as total_records from facilities', 
     function(err,response){ 
      callback(response); 
      helper.client.end.bind(helper.client); 
     }); 
    }); 
}; 

正如你可以在代码中看到我连接DB为每个请求,一旦查询执行断开。我还有一个想法,我只能在全局连接数据库一次,并使用打开的连接执行查询。代码看起来像

helper.client = new pg.Client('tcp://postgres:system6:[email protected]/abc_dev'); 
helper.client.connect(); 

exports.getAll = function (args, callback) { 
helper.client.query('select count(1) as total_records from facilities', function(err,response){ 
    helper.client.query('select * ,'+response.rows[0].total_records+' as total_records from facilities', 
     function(err,response){ 
      callback(response); 
     }); 
    }); 
}; 

这里的连接永远不会结束。据我所知,我无法确定哪一个最好。 请建议。

谢谢..

+0

非常有趣的问题。就我所知,连接请求范围在大多数语言中都很受欢迎。但是,我不确定它是否与Node相同。 –

回答

2

有一个在node-postgres wiki一个例子。它连接每当一个请求被处理:

var server = http.createServer(function(req, res, next) { 
    pg.connect(function(err, client, done) { 

这是我认为是正确的,太:您的连接应在要求范围之内。

+2

由于'node-postgres'使用连接池(默认池大小为10个连接),所以这是一个很好的解决方案。对于不提供池并且实际上每次都必须重新连接到数据库服务器的模块,似乎浪费资源并且全局连接可能(以及更快)运行。 – robertklep