所以我使用 pg-promise 来查询我的数据库。由于我使用的是 heroku postgres(免费版),因此最大连接数为 20。
要连接到数据库,我使用
pgp(process.env.DATABASE_URL + '?poolSize=10')
.connect()
.then( sco => {
dbclient = sco;
})
.catch( err => {
console.error(err);
})
我正在使用 dbclient 变量来运行查询,例如
dbclient
.one('select ...')
.then(() => ...)
.catch( res.status(500).send);
即使我将池大小设置为 10,连接数也会无限增加,并且我的应用程序会崩溃。
我该如何解决这个问题?每次运行查询时都必须释放客户端吗?
编辑:
所以我编辑了我的代码,这正是我现在使用它的方式,我仍然有同样的问题。
const pgp = require('pg-promise')();
pgp.pg.defaults.poolSize = 10;
router.get('/', (req, res) => {
pgp(process.env.DATABASE_URL).any('select ...')
.then((result) => res.status(200).send(result))
.catch(err => res.status(500).send({err}));
});