2017-09-23 64 views
0

我在Node.js中正在尝试填充模式时遇到问题。我有两个模式,其中一个是“UserSchema”的引用,我在这里添加我的代码,请任何人都帮我解决这个问题。如果我删除此代码唯一的工作是“.populate(‘user.email’)”的一部分Node.js填充不处理代码

Student.find({'Name': req.studentInfo.Name}) 
.populate('user.email').exec(function(err, numberOfPendingRequests){ 
    if(err){ 
    return next(err); 
    }else{ 
    console.log('\n\n\nFound unapproved requests\n\n\n'); 
    console.log(numberOfPendingRequests); 
    req.studentInfo.unapprovedRequests = numberOfPendingRequests; 
    return next(); 
    } 
}) 

// user.js 
var userSchema = mongoose.Schema({ 

    profile_id : String, 
    token  : String, 
    email  : String, 
    name   : String, 
    provider  : String, 
    detailSubmited: { 
     type: Boolean, 
     default: false 
    } 

}); 

module.exports = mongoose.model('User', userSchema); 

// student.js 

var studentSchema = mongoose.Schema({ 

collegeName : String, 
courseName : String, 
courseYear : String, 
user   : { 
    type: mongoose.Schema.Types.ObjectId, 
    ref : User 
} 
}); 

module.exports = mongoose.model('Student', studentSchema); 
+0

您确定在创建时将用户'_id'分配给学生吗? 你能告诉我你的创建方法吗? –

+0

var newStudent = new Student(); newStudent.collegeName = req.body.collegeName; newStudent.courseName = req.body.courseName; newStudent.courseYear = req.body.courseYear; newStudent.user = req.user._id; – ankitbaid11326

回答

0

如果你希望你的填充文件只返回特定字段,通过字段名作为填入的第二个参数功能。像这样:

Student.find({'Name': req.studentInfo.Name}).populate('user', 'email').exec(function(err, numberOfPendingRequests) {...} 

我希望这会有所帮助。

+0

你说的是正确的,但事情是甚至我试图运行不同的代码,这是在这个链接“http://mongoosejs.com/docs/populate.html”不工作的人口在猫鼬文档中提供。 这也给一些错误。 from docs code它能够将数据保存在数据库中,但无法填充数据 – ankitbaid11326

+0

这部分'Student.find({'Name':req.studentInfo.Name})''如何?它不应该是**名字**吗?你遇到任何特定的错误,还是该文件不只是填充? –