node.js - Mongoose withTransaction 仅部分执行

标签 node.js mongodb mongoose

Mongoose 的 session.withTransaction helper 只执行第一次写入。这是代码:

const session = await mongoose.startSession();

await session.withTransaction(async () => {
  const member = await Member.create([{
    name: 'John Doe'
    email: 'johndoe@example.com',
  }], { session });

  await User.updateOne({ _id: req.user.id }, { member: member._id }, { session });
});
此代码在数据库中创建一个新成员,但不更新用户。交易的意义不是只有在每个操作都成功时才能通过吗?我究竟做错了什么;或者这对 Mongoose 来说是不可能的?
Mongoose :5.9.26,
Node.js:14.9.0

最佳答案

检查是否使用您将基于事务的模型启动 session 帮助:

const session = await Member.startSession();

关于node.js - Mongoose withTransaction 仅部分执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63804395/

相关文章:

node.js - 如何获取前端上传的文件并本地存储

javascript - 我想在 Node.js 和 EJS 中使用 JQuery 但 $ 未定义

node.js - 如何根据数组字段的长度对文档进行排序

javascript - Mongoose:Coffeescript 中的递归嵌入式文档

node.js - mongoose findByIdAndDelete/findOneAndRemove 不删除

javascript - 从单独的网络访问 Node.js 服务器

perl - 有没有人成功地将 jqPlot 图表渲染为服务器端图像(例如使用 node.js)?

PHP MongoDB 计数记录

javascript - 在 MongoDB 中匹配一组包含数组的项目

javascript - 如何选择给定条件的数据