如何结束“pg-promise”应用程序

我正在尝试编写基于请求有效负载的REST API来select数据库并执行某些操作。

根据文档,我将在操作结束时释放共享连接对象,然后通过结束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"); }); } }; 

尽pipe如此,我仍然从第二个API调用(到同一个数据库)得到以下错误:

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

有人可以帮我解决以下任一问题

  • 在随后的调用中重新使用pgp连接对象
  • 在每次通话结束时正确终止应用程序

谢谢

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

你绝对不应该这样做,在每个查询是一个可怕的想法后,closures整个连接池。

在随后的调用中重新使用pgp连接对象

什么是并发症? 你问如何在Node.js中重用对象?

另请参见: 我应该在哪里初始化pg-promise 。

你应该远离使用db.connect方法,这不是一个好的方法来使用框架。 你应该依靠自动连接,而不是;)