2017-09-23 10 views
0

私はNode.jsでスキーマを作成しようとしています。私は2つのスキーマを持っており、1つは "UserSchema"の参照を保持している、私はここに私のコードを追加して誰もこの問題を助けてください。私はあなたがあなたの人口文書は特定のフィールドのみを返すようにしたい場合は、「.populate( 『user.email』)」の部分Node.js Populateがコードで動作していません

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'をstudentに割り当ててもよろしいですか? createメソッドを表示できますか? –

+0

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

答えて

0

、移入の2番目の引数としてフィールド名を渡すことを削除した場合、このコードは働いています関数。このように:

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

私はこれが役立ちます。

+0

あなたが言っていることは正しいですが、私はこのリンクの人口のためのmongoose documencationで提供されている別のコードを実行しようとしています "http://mongoosejs.com/docs/populate.html"は動作していません。 もエラーがあります。 docsコードからデータをDBに保存できますが、データを取り込めません – ankitbaid11326

+0

この部分はどうでしょうか? 'Student.find({' Name ':req.studentInfo.Name}) ' **名前**になっていないのですか?特定のエラーが発生しましたか、またはドキュメントにはデータが入力されていませんか? –

関連する問題