我正在使用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。
有关使用abortTransaction()的示例代码,请参见https://www.mongodb.com/blog/post/quick-start-nodejs--mongodb--how-to-implement-transactions。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句