다음 함수는 여러 개의 사용자 ID 배열을 포함하는 집계 커서를 사용하므로 해당 ID를 가진 사용자를 수정 한 다음 저장할 수 있습니다.Nodejs와 Mongoose는 콜백 전에 문서가 저장 될 때까지 대기합니다.
내가 겪고있는 문제는 일단 모든 사용자가 수정되고 저장되면 함수가 돌아 오는 것입니다. 현재는 그렇게하지 않으며 나중에 (이 함수 다음에 나오는) 사용자에게 액세스하려고 시도하면 수정 사항이 완전히 스며 들지 않습니다.
이 수정을 수행하는 현재의 코드입니다 (내가 성공하지 다른 옵션의 10 초 시도 된 일부 이상한 비동기 추가 될 수 있음) :
function updateUsers(dataArray, done) {
dataArray.eachAsync(
function(data) {
let userArray = data.users;
async.forEach(userArray, function(userId, callBack){
mongoose.model('User').findById(userId, function(err, user) {
// User document modified
user.save(function(err, user){
callBack();
});
});
});
},
function(err) {
//Only come here once all the users have been modified and saved!
if (err) {
return done(err, false);
}
return done(err, true);
}
);
}
전달되는 데이터는 다음과 같습니다
dataArray : eachAsync 예에 대한 집계 커서
결과 데이터는 다음과 같습니다 당신은 콜백의 매 반복 한 후 콜백을 통해 return 문을 호출
{ _id: 'GroupValue',
users:
[ 5a0b2f5bcd0813adeac2435b,
5a0b2f5bcd0813adeac24357,
5a0b2f5bcd0813adeac24358 ] }