来自 https://node-postgres.com/features/connecting ,似乎我们可以选择
Pool
或 Client
来执行查询
pool.query('SELECT NOW()', (err, res) => {
console.log(err, res)
pool.end()
})
client.query('SELECT NOW()', (err, res) => {
console.log(err, res)
client.end()
})
它们的功能看起来非常相似。但是,文档并没有解释
Pool
和 Client
之间的区别。
请问,在选择
Pool
或 Client
之前我应该考虑什么?
我可以知道,在选择池还是客户端之前我应该考虑什么?
如果您有或预计有多个并发请求,请使用池。这就是它的真正用途:提供可重用的开放
client
实例池(只要可以重用 client
即可减少延迟)。
在这种情况下,您绝对不希望在查询完成时调用pool.end()
,您希望在应用程序终止时保留该调用,因为
pool.end()
会处理所有打开的
client
实例。 (请记住,重点是保持固定数量的可用
client
实例。)
Client
时,您必须使用
transactions
。来自
您必须对一个内的所有语句使用相同的客户端实例 交易。 PostgreSQL 将事务隔离到各个客户端。 这意味着如果您通过 pool.query 初始化或使用事务 方法你就会遇到问题。请勿使用交易 pool.query方法。