mongodb4.0事务
在mongodb副本集中开启了事务 进行了两次写入插入操作,一次写入操作会成功,一次写入操作会失败,为什么数据依然会插入到数据库?
async insertStore() {
const { ctx } = this;
const query = ctx.request.body;
// Start a session.
const session = await this.ctx.app.mongoose.startSession({
readPreference: { mode: 'primary' },
});
// Start a transaction
await session.startTransaction({
readConcern: { level: 'snapshot' },
writeConcern: { w: 'majority' },
});
// Operations inside the transaction
try {
await ctx.service.store.insertStore(query);
const userRes = await this.findUser({ token: this.ctx.headers.token });
const updateRes = await this.updateUser(
{ id: userRes[0].id },
{ $set: { store: 4343 } }
);
await session.commitTransaction();
} catch (err) {
await session.abortTransaction();
throw err;
} finally {
await session.endSession();
}
}
mongoose配置 MongoDB shell version v4.0.10 mongoose v:5.6.x
mongoose: {
client: {
url: 'mongodb://127.0.0.1:27013,127.0.0.1:27012,127.0.0.1:27011/mall',
options: {
autoIndex: false,
replicaSet: 'rs0',
readPreference: 'secondary',
w: 'majority',
},
// mongoose global plugins, expected a function or an array of function and options
plugins: [],
},
},
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
加上配置项
const updateRes = await this.updateUser(
);