내 스키마는 다음과 같습니다. 학생은 모든 아니오에 참여할 수 있습니다. 각 이벤트에는 여러 명의 학생이 참여할 수 있습니다.몽구스 개체 배열을 일괄 업데이트
Student{
name:String,
age:Number,
.
.
.,
events:{
type:
[
{type:Schema.ObjectId,
ref:'Event'}
]
}
}
Event{
title:String,
desc:String,
eventDate:Date,
participants:{
type:
[{
student: {type:Schema.ObjectId,
ref:'Student'},
status : String
}]
}
}
내 요구 사항 : 때마다, 나는 이벤트 객체 내부의 해당 이벤트의 모든 참가자를 밀어 필요, 이벤트를 만들 수 있습니다. 그리고 차례로 모든 참여자 내부에서 이벤트 참조에 태그를 지정합니다.
내 코드}이 코드가 작동
function handleTeamParticipants(eventObj, participants) {
Student
.find({
$or: [{
_id: participants[0].student._id
}, {
_id: participants[1].student._id
}]
})
.populate('events events.participants events.participants.student')
.exec(function(err, students) {
var studentLength = students.length,
result = [];
var saveAll = function() {
var doc = students.pop();
Student.populate(doc, {
path: 'events.participants.student',
model: 'Student'
}, function(err, student) {
student.events.push(eventObj);
student.save(function(err, saved) {
if (err) next(err); //handle error
result.push(saved);
if (--studentLength) saveAll();
else // all saved here
{
return res.status(200).send(eventObj);
}
});
});
};
saveAll();
});
입니다. 이렇게하면 처음 두 참가자 만 업데이트되고 차례로 eventobj에 추가됩니다. 하지만 찾기 쿼리를 통해 모든 참가자를 선택할 수 있습니다 .student._id
쉬운 방법을 알려주십시오.
감사합니다.