我有一个提示问题: 当我应该使用批处理并最终关闭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)
感谢您的回答,以及有关改善此问题的其他提示。
答案 0 :(得分:-2)
好吧,既然你说你需要一个提示,我会说,除非你写一些低级驱动程序,否则使用ORM。 2017年管理连接池对我来说非常低。我推荐你这个ORM https://github.com/sequelize/sequelize。它订阅process.on('exit', callback)
并终止所有连接。