【问题标题】:How to do nested populate in mongoose?如何在猫鼬中进行嵌套填充?
【发布时间】:2015-07-28 19:58:12
【问题描述】:

我的项目涉及我只允许school Admin 插入各个学校的学生数据,我应该显示插入数据的school Admin 的详细信息以及他输入的学生详细信息。

students 架构的架构如下:

    userId: {
        type: Object,
        ref: 'User'
    },
    ugId:{
        type:Number

    },
    firstName:{
        type:String,
        required:true
    },
    lastName:{
       type:String,
       required:true    
    }

在这里你可以看到userId 指的是名为User 的模型,其架构如下:

    email: {
        type: String,
        required: true,
        index: true,
        unique: true
    },
    firstName: {
        type: String,
        required: true
    },
    lastName: {
        type: String,
        required: true
    },
    userName: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    mappedUserDetails2: {
        type: Schema.Types.ObjectId,
        ref: 'Students'
    },
    UserGroupID: {
        type: Object,
        ref: 'UserGroups'
    }

在User Schema中,UserGroupID是指UserGroups Model,其Schema如下:

 groupName: {
        type: String,
        required: true,
        index: true,
        unique: true
    },
    createdDate: {
        type: Date,
        default: Date.now
    },
    updatedDate: {
        type: Date,
        default: Date.now
    },
    uid: {
        type: Number,
        min: 1
    },
    mappedUserDetails3: {
        type: Schema.Types.ObjectId,
        ref: 'User'
    }

我发布的数据如下

{
  "userId":"55b7320173ceb5640e1b24a6",
  "ugId":3,
  "firstName":"AGGI",
  "lastName":"AGGIqa"
}

成功完成我的 API 后收到的输出如下

 { 
  "success": true,
  "userData":{
             "_id": "55b758a09472f03310cdb9a2",
             "userId":{
                 "_id": "55b7320173ceb5640e1b24a6",
                 "email": "XYZ@gmail.com",
                 "firstName": "XYZ",
                 "lastName": "XYZ",
                 "userName": "XYZ XYZ",
                 "UserGroupID": "55b7138c049d0d5d0dddd824",
                 "__v": 0
                },
              "firstName": "AGGI",
              "lastName": "AGGIqa",
              "ugId": 3,
              "__v": 0
}

My Question:我想知道有没有办法在已经填充的userId 中填充UserGroupID,因为UserGroupID 指的是objectId UserGroup模特?

userId 我的populate 代码如下:

    Students.findOne({
                    _id: data._doc._id
                }).populate('userId','-password').exec(function (err, data) {
                    if (err) {
                        return res.json({
                            success: false,
                            exception: err
                        });
                    }
                    else{ 
                    return res.json({
                            success: true,
                            userData: data
                        });
                    }
                });

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    Mongoose 默认不提供此功能,但您可以使用write your own plugin,否则您可以使用mongoose-deep-populate,这正是您所需要的。

    【讨论】:

    • 感谢您提供的信息。它帮助很大
    猜你喜欢
    • 2019-01-16
    • 2021-12-25
    • 2015-11-24
    • 1970-01-01
    • 2015-02-09
    • 2021-11-07
    • 2014-07-28
    • 2016-08-17
    相关资源
    最近更新 更多