我最近开始在我的项目中使用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
模型上的给定学生执行userId
和userId.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
});
}
});
。有人可以指出我在哪里犯了错误,解决方法是什么?
答案 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
});
}
});