【发布时间】:2022-12-11 16:12:50
【问题描述】:
在我的一个项目中,我想与 pg-promise 并行执行 2 个查询。我将这些查询包含在交易中,如下所示。我还使用 Promise.all() 并行进行数据库调用。我想了解它在内部是如何工作的,因为事务使用单个数据库连接进行查询,这是否意味着第二个查询只能在第一个查询完成后执行,因为第一个查询持有 txn?
const {TransactionMode} = pgp.txMode;
// Create a reusable transaction mode (serializable + read-only + deferrable):
const mode = new TransactionMode({
readOnly: true,
deferrable: true
});
db.tx({mode}, t => {
return Promise.all([t.any('SELECT * FROM table1'),t.any('SELECT * FROM table2')]);
})
.then(data => {
// success;
})
.catch(error => {
// error
});
由于事务获取单个数据库连接来运行事务中的所有查询,因此了解它是如何完成的会很有趣。
【问题讨论】:
标签: node.js postgresql es6-promise pg-promise promise.all