在猫鼬中填充嵌套模型

Posted

技术标签:

【中文标题】在猫鼬中填充嵌套模型【英文标题】:Populate nested model in mongoose 【发布时间】:2021-12-25 15:23:16 【问题描述】:

我得到了这个猫鼬模式

    const UserSchema = new Schema(
      email: 
        type: String,
        required: true,
        unique: true,
      ,
      groups: [
        
          groupName: 
            type: String,
            required: true,
          ,
          groupMembers: [ type: Schema.Types.ObjectId, ref: "GroupMember" ],
        ,
      ],
    );

我正在尝试填充 groupMembers

    const user = await User.findById(req.params.userId).populate(
          path: "groups",
          populate: 
            path: "groupMembers",
          ,
        );

当我记录“用户”时,groupMembers 数组没有填充,它是空的(即使我里面有对象)。

编辑:找到解决方案 - 问题是当我添加新的 GroupMember 时,我没有 .save() 它。

【问题讨论】:

【参考方案1】:

试试这个:

const user = await User.findById(req.params.userId).populate('groups.groupMembers');

【讨论】:

我试过了,还是一样的结果(空 groupMembers 数组)。 你应该仔细检查 groups.groupMembers 中是否真的有项目,因为只有当它没有项目时它才会是空数组。 是的,我在 groups.groupMembers 中有项目,我可以在我的 mongo 数据库中看到这些项目,它是 ObjectId 的数组。

以上是关于在猫鼬中填充嵌套模型的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬中填充嵌套实体?

您可以在猫鼬中执行多个嵌套填充吗?

如何在猫鼬中异步填充嵌套对象?

如何仅在猫鼬中使用聚合填充嵌套在对象数组中的字段?

如何在猫鼬中填充模型

如何在猫鼬中填充另一个模型的子文档?