2017-09-23 34 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})''如何?它不應該是**名字**嗎?你遇到任何特定的錯誤,還是該文件不只是填充? –