3
나는 mongodb에서 가져온 객체 배열을 가지고 있습니다. 배열의 모든 요소는 작성자가 user_id 인 게시물입니다. 이제 user_id와 관련된 사용자 정보를 찾고 싶습니다.비동기 nodejs 쿼리 및 결과 처리
노드가 비동기 메소드를 사용하여 db에서 데이터를 찾기 때문에 forEach 루프는 콜백이 완료되기 전에 완료됩니다. 나는 CB (문서)를 보내는 경우
docs.forEach(function(doc, index){
//get the user for this doc
User.find({_id: mongo.BSONPure.ObjectID(doc.user_id)}, {name: 1, username: 1, email: 1}).skip(0).limit(1).toArray(function(err, user){
user = user[0]
if(err) {
throw new Error(err)
} else {
docs[index].user = user
if(doc.for_id) {
User.find({_id: mongo.BSONPure.ObjectID(doc.for_id)}, {name: 1, username: 1, email: 1}).skip(0).limit(1).toArray(function(err, for_user){
for_user = for_user[0]
if(err) {
throw new Error(err)
} else {
docs[index].for_user = for_user
}
})
}
}
})
})
그래서이 루프의 끝에서, 문서는 사용자와 for_user 속성이 없습니다. 어떻게 이것을 극복 할 수 있습니까?
foreach는 콜백 함수와 같은 뭔가가 현재 문서> http://www.mongodb.org/display/DOCS/Queries+and+Cursors 커서 만 하나의 매개 변수를 사용합니다. 귀하의 예에서 색인은 정의되지 않아야합니다. – neebz
설명 제목이 아니기 때문에 질문의 제목을 다시 말해주십시오. – Tom