使用mongoose添加回滚功能

时间:2018-03-08 09:26:36

标签: node.js mongodb mongoose transactions

我有两个集合,如下所示:

let User = Schema({
    logID: { type: String, required: true },
    name: { type: String, required: true }
});
let Log = Schema({
  id: { type: String, required: true },
  users: [{ type: Schema.Types.ObjectId, ref: 'User' }]
});

我正在执行以下交易:

let currLog = await Log.findOne({"id": logID});
if(!currLog) throw new Error("No such log is there");
let newUser = await User.save(payload);
let updatedLog = await currLog.users.push(newUser._id);
currLog.update();

因此,如果由于某种原因,LOG未更新,则应该回滚新用户,如删除时。 如何使用猫鼬完全实现这一目标? 我查看了以下资源:
https://docs.mongodb.com/manual/tutorial/perform-two-phase-commits/
https://github.com/anand-io/mongoose-transaction
但发现很难实现这一功能 因为在我的情况下,第一个交易的数据正在第二个交易中使用( newUser._id )。

0 个答案:

没有答案