Mongoose.deepPopulate未按预期工作

时间:2015-07-28 13:54:57

标签: node.js mongodb mongoose

我最近开始在我的项目中使用mongoose-deep-populate npm包来嵌套填充。我的项目让我只允许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的模型,其模式如下:

//More Fields
mappedUserDetails2: {
    type: Schema.Types.ObjectId,
    ref: 'Students'
},
UserGroupID: {
    type: Object,
    ref: 'UserGroups'
}

User架构中,UserGroupID指的是UserGroups模型,其架构如下:

 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"
}

我的代码为deepPopulate模型上的给定学生执行userIduserId.UserGroupID的{​​{1}},如下所示:

students

当我在DHC上运行API时,我没有任何输出并且使用节点检查器我发现我的API正在打破 Students.findOne({ _id: data._doc._id}).deepPopulate('userId', '-password').deepPopulate('userId.UserGroupID').exec(function (err, data) { if (err) { return res.json({ success: false, exception: err }); } else { return res.json({ success: true, userDetails: data }); } }); 。有人可以指出我在哪里犯了错误,解决方法是什么?

1 个答案:

答案 0 :(得分:1)

我尝试使用以下格式为我的deepPopulate工作。

Students.findOne({_id: data._doc._id}).deepPopulate(['userId', 'userId.UserGroupID']).exec(function (err, data) {
   if (err) {
             return res.json({
                     success: false,
                     exception: err
             });
   } else {
           delete data._doc.userId._doc.password;
              return res.json({
                          success: true,
                          userDetails: data
                     });

         }

});