Node.js连接PostgreSQL数据库

5
我正在使用应用程序中的node-postgres。 我想知道要遵循哪些最佳实践,以确保稳定的连接。
以下是我目前正在使用的代码,
exports.getAll = function (args, callback) {
helper.client = new pg.Client('tcp://postgres:system6:5432@192.168.143.11/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);
        });
    });
};

从代码中可以看出,我每次请求都会连接数据库,并在查询执行完毕后断开连接。我还有一个想法,可以全局连接数据库一次,然后使用已打开的连接执行查询。代码如下:

helper.client = new pg.Client('tcp://postgres:system6:5432@192.168.143.11/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);
        });
    });
};

在这里,连接永不中断。就我所知,我无法决定哪个更好。请建议。

谢谢。


非常有趣的问题。据我所知,大多数语言中请求作用域上的连接很受欢迎。但是,我不确定Node是否也是如此。 - Sebastian vom Meer
1个回答

3

node-postgres wiki中有一个例子。每当处理请求时,它就会连接:

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

我认为这也是正确的:您的连接应该是请求范围内的。

2
由于 node-postgres 使用连接池(默认池大小为 10 个连接),因此这是一个很好的解决方案。对于不提供连接池并且实际上每次都必须重新连接到数据库服务器的模块,这似乎是一种浪费资源的做法,而全局连接可能同样有效(并且更快)。 - robertklep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接