Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何结束';pg promise&x27;应用程序_Javascript_Node.js_Node Postgres_Pg Promise - Fatal编程技术网

Javascript 如何结束';pg promise&x27;应用程序

Javascript 如何结束';pg promise&x27;应用程序,javascript,node.js,node-postgres,pg-promise,Javascript,Node.js,Node Postgres,Pg Promise,我正在尝试编写一个RESTAPI,它基于请求负载选择一个数据库并执行某些操作 根据文档,我将在操作结束时释放共享连接对象,然后通过结束pgp应用程序来完成此操作 var pgp = require('pg-promise')(); var connection = { user: 'generaluser', //env var: PGUSER database: 'seeddb', //env var: PGDATABASE passwor

我正在尝试编写一个RESTAPI,它基于请求负载选择一个数据库并执行某些操作

根据文档,我将在操作结束时释放共享连接对象,然后通过结束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调用(对同一数据库)开始,我一直收到以下错误:

有人能帮我做以下两件事吗

  • 在后续调用中重用pgp连接对象
  • 在每次调用结束时正确终止应用程序
谢谢

在每次调用结束时正确终止应用程序

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

在后续调用中重用pgp连接对象

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

另见:


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

我在应用程序中实现了一个缓存层,以跨API调用保持db连接。
WARNING: Creating a duplicate database object for the same connection.