如何结束 'pg-promise' 个应用

How to end 'pg-promise' app

我正在尝试编写一个 REST API,它根据请求负载选择一个数据库并执行某些操作。

根据文档,我将在操作结束时释放共享连接对象,然后通过结束 pgp 应用程序来完成它。

    var pgp = require('pg-promise')();

    var connection = {
      user: 'generaluser', //env var: PGUSER
      database: 'seeddb', //env var: PGDATABASE
      password: '$$$$$$$', //env var: PGPASSWORD
      host: 'localhost', // Server hosting the postgres database
      port: 5432 //env var: PGPORT
    };

    var sco;

    module.exports = {
        getuser: function(req, res)
      {
        Account.findOne({ select: [ 'database' ], where: { appid: req.body.appid } })
        .then(function (result)
        {
          connection.database = result.database;
          var db = pgp(connection);
          return db.connect();
        })
        .then(function (obj)
        {
          sco = obj;
          return sco.any("select * from users");
        })
        .then(function (result)
        {
          console.log(result);
          return sco.done();
        })      
        .done(function ()
        {
          pgp.end();
          return res.ok("Done");
        });
      }
    };

尽管如此,从第二次 API 调用(对同一个数据库)开始,我一直收到以下错误:

WARNING: Creating a duplicate database object for the same connection.

谁能帮我解决以下任一问题

谢谢

Terminate the application properly at the end of each call

你绝对不应该这样做,在每次查询后关闭整个连接池是一个糟糕的主意。

Reuse the pgp connection object on subsequent calls

并发症是什么?您是在询问如何重用 Node.js 中的对象吗?

另请参阅:

并且你应该远离使用方法 db.connect 那样,这不是使用框架的好方法。您应该依赖自动连接 ;)