当我应该使用批处理并最终关闭pg-promise中的客户端连接?

时间:2017-05-05 17:44:25

标签: javascript node.js postgresql pg-promise

我有一个提示问题: 当我应该使用批处理并最终关闭pg-promise中的客户端连接? 这是因为我在官方API(http://vitaly-t.github.io/pg-promise/Database.html)中看到,有时他们会将其用于选择查询,而其他人则不会。 如果我的数据库在云中,那么表现我的数据库事务的最佳方法是什么? 我使用Postgresql 9.5,接下来是一些例子:

db.tx(t => {
    return t.map('SELECT * FROM users WHERE email = $1 LIMIT 1', [data.email], result => {
      return result
    })
  })
  .then(data => {
    // Success
    let user = data[0]
    return res.json({exist: !!user, user})
  })
  .catch(e => {
    console.error('Error select user', e);
    return res.status(500).json({success: false, data: e})
  })
  .finally(pgp.end)

db.tx(t => {
    let query = // some json_build_object query

    return t.map(query, [], categories => categories.json)
  })
  .then(data => {
    return res.json(data)
  })
  .catch(e => {
    console.error('Error select categories', e);
    return res.status(500).json({success: false, data: e})
  })
  .finally(pgp.end)

感谢您的回答,以及有关改善此问题的其他提示。

1 个答案:

答案 0 :(得分:-2)

好吧,既然你说你需要一个提示,我会说,除非你写一些低级驱动程序,否则使用ORM。 2017年管理连接池对我来说非常低。我推荐你这个ORM https://github.com/sequelize/sequelize。它订阅process.on('exit', callback)并终止所有连接。