我正在使用 MongoDB 事务,如下例所示,我想知道是否有办法以编程方式取消更新事务,以防以下步骤失败。
const session = client.startSession();
try {
await session.withTransaction(async () => {
await coll1.insertOne({ abc: 1 }, { session });
await coll2.insertOne({ xyz: 999 }, { session });
}, transactionOptions);
// Now that the DB is updated, I'll try to use a service
const result = paymentProcessor.chargeCard(billingDetails, 200);
if(result.error) **cancelTransactionAndRestoreEvery();**
} finally {
await session.endSession();
await client.close();
}
最佳答案
您可以使用 session.abortTransaction() 中止事务,以便回滚事务中已发生的所有内容。
参见http://mongodb.github.io/node-mongodb-native/3.5/api/ClientSession.html#abortTransaction对于官方文档。
参见https://www.mongodb.com/blog/post/quick-start-nodejs--mongodb--how-to-implement-transactions例如使用 abortTransaction() 的代码。
关于node.js - 以编程方式取消 MongoDB 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59897708/