首页 > 解决方案 > find().session(session) 的 Mongoose 事务给出 IllegalOperation 错误

问题描述

我无法找到解决此问题的方法。

我想获得所有具有“管理员”权限的用户并想向他们发送通知。到目前为止,我使用 Mongoose 事务尝试过的内容如下:

const session = await mongoose.startSession();
session.startTransaction();

const systemRole = await SystemRole.find(
    {
      isActive: true,
      roleName: "Admin",
    },
 ).session(session);

const adminUsers = await User.find(
      {
        isActive: true,
        systemRoles: { $contains: systemRole },
      },
    ).session(session);

systemRole用户模式中有一个数组,其类型为ObjectId.

我不知道我在这里错过了什么,但这不断向我发送以下错误:

errors:
code: 20
codeName: "IllegalOperation"

我已经关注了这篇文章

在没有会话的情况下查找systemRoles工作正常,但我希望它在事务中,以便如果失败,它应该被中止。

标签: node.jsmongodbexpressmongoose

解决方案


推荐阅读