首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pg-promise的连接

使用pg-promise的连接
EN

Stack Overflow用户
提问于 2016-09-19 18:55:41
回答 1查看 2.8K关注 0票数 1

所以我使用pg-promise来查询我的数据库。因为我使用的是heroku postgres (免费版本),所以最大连接数是20。

要连接到数据库,我使用

代码语言:javascript
复制
pgp(process.env.DATABASE_URL + '?poolSize=10')
  .connect()
  .then( sco => {
    dbclient = sco;
  })
  .catch( err => {
    console.error(err);
  })

我使用dbclient变量来运行查询,例如

代码语言:javascript
复制
dbclient
  .one('select ...')
  .then(() => ...)
  .catch( res.status(500).send);

即使我将池大小设置为10,连接数量也会无限增加,我的应用程序也会崩溃。

我该如何解决这个问题呢?我必须在每次运行查询时释放客户端吗?

编辑:

所以我编辑了我的代码,这正是我现在使用它的方式,我仍然有同样的问题。

代码语言:javascript
复制
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}));
});

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-19 19:29:37

首先,根本不要使用connect方法。数据库对象可以自动管理连接。Method connect只适用于一些非常特定的任务,如setting up listenersexplicitely verify the connection

您应该直接对db对象执行单个查询,并且应该在taskstransactions内部执行查询链。另请参见Chaining Queries

您可以使用如下所示的max通过连接参数更改缺省池大小:{max: 20}。请参阅Connection Syntax

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39571455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档