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

Postgresql+Node.js queries start failing after a few tries

本文关键字:几次 失败 开始 查询 js Postgresql+Node      更新时间:2023-09-26

我有一个node.js应用程序,在Heroku上运行一个postgresql数据库,由于某种原因,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次,然后不知怎么的就坏了。

如何解决这个问题?

如果它工作了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));
    }
});

参见connect的文档