Postgresql + Node.js查询在几次尝试后开始失败

时间:2013-06-06 01:01:06

标签: javascript node.js postgresql heroku

我有一个带有在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次,然后突然冒出来。

我该如何解决这个问题?

1 个答案:

答案 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));
    }
});

请参阅the documentation for connect