事务特性:
原子性:所有的改变都完成
一致性:最终执行结果一致就行
隔离性:一个事务的执行不能其它事务干扰。
持久性:指一个事务一旦提交,数据不会改变,存在数据库中
exports.getSession = async function() {
return await mongoClient.startSession();
}
//每次开启事务管理
https://docs.mongodb.com/manual/core/transactions/
https://mongoosejs.com/docs/api.html#connection_Connection-startSession
const session = await db.getSession();
session.startTransaction({
readConcern: {
level: 'snapshot'
},
writeConcern: {
w: 'majority'
}
});
db.collection(this.collecitonName)
.insertOne(doc, {
session
});
回滚:
await session.abortTransaction();
提交:
await session.commitTransaction();
session.endSession();
参考:https://docs.mongodb.com/manual/core/transactions