私はそこに答えがあるのは分かっていますが、それでも私はそのアイデアを得ていません。 私はCourseSchema
を持っている:もちろんで私は学生とCourseSchema
でenrolledStudents
をrefferしたいリファレンスが配列されたMongoose NodeJSスキーマ
const StudentSchema = new Schema({
first_name: String,
last_name: String,
enrolledCourses:[{
type: mongoose.Schema.Types.ObjectId,
ref: 'CourseSchema'
}]
});
、およびStudentSchema
でenrolledCourses
:
const CourseSchema = new Schema({
course_name: String,
course_number: {type: String, unique : true },
enrolledStudents:[{
type: mongoose.Schema.Types.ObjectId,
ref: 'Student' }]
});
とStudentSchema
。
router.post('/addStudentToCourse', function (req, res) {
Course.findById(req.params.courseId, function(err, course){
course.enrolledStudents.push(Student.findById(req.params.studentId, function(error, student){
student.enrolledCourses.push(course).save();
})).save();
});
});
が、投稿するときに、私はエラーを取得する:
TypeError: Cannot read property 'enrolledStudents' of null
[OK]をQuery-populate準備を進めた後、私はことをやったので:
router.post('/addStudentToCourse', function (req, res) {
Course.
findOne({ _id : req.body.courseId }).
populate({
path: 'enrolledStudents'
, match: { _id : req.body.studentId }
}).
exec(function (err, course) {
if (err) return handleError(err);
console.log('The course name is %s', course.course_name);
});
});
とするとき、私は郵便配達にPOSTを打っています私はコンソールに乗る:
The course name is intro for cs
が、私が手にコンソール上で、これまでとそれ以降のためにロードされます。
POST /courses/addStudentToCourse - - ms - -
、 'refを変更してみてください。「Student''を'ref: 'StudentSchema''へ。わかりませんが、うまくいくかもしれません。 – oneturkmen