Michael Zaporozhets
Michael Zaporozhets

Reputation: 24526

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

I have a node.js app with a postgresql database running on Heroku and for some reason select functions seem to break and start failing after many successful attempts for what seems to be no reason at all..

Example code:

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

The above code works perfectly about 10 times and then out of nowhere seems to break.

How can i remedy this issue?

Upvotes: 0

Views: 343

Answers (1)

Ygg
Ygg

Reputation: 3870

If it works 10 times, and fails on the 11'th then it's probably because the pool of connections has run out.

You should call done in your code after you have finished with the request, to send the database connection back to the pool.

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

see the documentation for connect

Upvotes: 1

Related Questions