Javascript 使用pg管理从NodeJ到postgres的多个连接

Javascript 使用pg管理从NodeJ到postgres的多个连接,javascript,node.js,postgresql,npm,pg,Javascript,Node.js,Postgresql,Npm,Pg,我想执行一个脚本,该脚本将执行大量查询,并用于管理连接。问题是,当我的池已满时,我的程序停止,并且不对将来的查询排队。我尝试将池大小设置为0,但也不起作用 pg.defaults.poolSize = 100000000; var pgQuery = function(query) { return new Promise(function(resolve, reject) { pg.connect(conString, function(err, client) { // Whe

我想执行一个脚本,该脚本将执行大量查询,并用于管理连接。问题是,当我的池已满时,我的程序停止,并且不对将来的查询排队。我尝试将池大小设置为0,但也不起作用

pg.defaults.poolSize = 100000000;

var pgQuery = function(query) {
  return new Promise(function(resolve, reject) {
    pg.connect(conString, function(err, client) { // When the pool is full, pg doesn't connect to the DB
      if(err) {
        console.error('error fetching client from pool', err);
        reject(err);
      }
      client.query(query, 
      function(err, res) {
        if(err) {
          console.error('error running query', err);
          reject(err);
        }
        resolve(res);
      });
    });
  });
};

有什么建议吗?

我发现了我的问题,我没有将客户端释放回池中。为此,我必须在执行查询后调用done()回调

var pgQuery = function(query) {
  var attempt = 0;
  return new Promise(function(resolve, reject) {


    // I added the done callback in parameter.
    pg.connect(conString, function(err, client, done) {
      if(err) {
        console.error('error fetching client from pool', err);
        attempt++;
        if (attempt < 11) {
          pgQuery(query);
        } else {
          reject(err);
        }
      }
      client.query(query, 
      function(err, res) {


        //call `done()` to release the client back to the pool
        done();
        if(err) {
          console.error('error running query', err);
          reject(err);
        }
        resolve(res);
      });
    });
  });
};
// Without this line the http request is triggered twice
req.connection.setTimeout(15*60*1000)