【发布时间】:2021-06-20 04:45:01
【问题描述】:
代码:
const session = await mongoose.startSession();
session.startTransaction();
try {
const model = mongoose.model("cars");
const document = { _id: "6059edf7fc81428fcc0b5c33" };
await model.create(document);
await model.create(document); // illegal duplicate key
await session.commitTransaction();
session.endSession();
} catch (error) {
await session.abortTransaction();
session.endSession();
}
预期行为: 我希望整个操作都会失败,没有条目插入到数据库中
实际行为: 未调用 commitTransaction(),因为第二个 create() 失败;调用了 abortTransaction(),但代码执行后,数据库有第一个条目。
似乎这个问题描述了同样的事情,但没有答案: Why does some documents get saved in mongoose transactions eventhough the transaction fails
【问题讨论】:
标签: mongodb mongoose transactions