我如何在 node-postgres 的客户端或池之间进行选择
How can I choose between Client or Pool for node-postgres
从 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
之间做出选择之前我应该考虑什么?
May I know, what thing I should consider, before choosing between Pool or Client?
如果您有或期望有多个并发请求,请使用池。这就是它的真正用途:提供一个可重复使用的开放 client
实例池(每当 client
可以重复使用时减少延迟)。
在那种情况下,您绝对不想在查询完成时调用pool.end()
,您希望在应用程序终止时保留它,因为pool.end()
处理所有打开的 client
个实例。 (请记住,关键是要保持固定数量的 client
个可用实例。)
从 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
之间做出选择之前我应该考虑什么?
May I know, what thing I should consider, before choosing between Pool or Client?
如果您有或期望有多个并发请求,请使用池。这就是它的真正用途:提供一个可重复使用的开放 client
实例池(每当 client
可以重复使用时减少延迟)。
在那种情况下,您绝对不想在查询完成时调用pool.end()
,您希望在应用程序终止时保留它,因为pool.end()
处理所有打开的 client
个实例。 (请记住,关键是要保持固定数量的 client
个可用实例。)