事務特性:
原子性:所有的改變都完成
一致性:最終執行結果一致就行
隔離性:一個事務的執行不能其它事務干擾。
持久性:指一個事務一旦提交,數據不會改變,存在數據庫中
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
