主管前幾天發現mongoDB已經升級到4.0了,火燒眉毛得讓我實現他期待已久的事務回滾,發現仍是有不少坑啊!
下面是我將已有的本地mongoDB升級到支持事務回滾的歷程,分享出來,有錯誤的地方歡迎指正!
以mac爲例哈html
$ brew upgrade mongodb
$ npm i mongodb --save-dev
useNewUrlParser:true
,authSource:用戶所在的db,通常爲admin
const mongoClient = await MongoClient.connect(mongoClientUrl, { auth: { user: config.dbUserName, password: config.dbUserPassword, }, authSource:'admin', useNewUrlParser:true, });
$ mongod -dbpath ./db --port 27017 --replSet rs0
$ mongod -dbpath ./db_repl --port 27018 --replSet rs0
$ mongo $ rs.initiate() $ rs.add('localhost:27018');
export const getSession = async function() { return await state.mongoClient.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();