2014-06-15 3 views
0

저는 노드 js에서 새로 왔습니다. 나는 돛 js를 프레임 워크로 사용하고 있습니다. 중첩 된 데이터베이스 쿼리를 사용하려고합니다. 추가 된 코드를 확인하십시오.nodejs의 비동기 데이터베이스 처리

내 현재 몽고 컬렉션 이름은 todostatus입니다. 양식을 작성하여 데이터를 가져 왔습니다. 그런 다음 콜백 함수를 사용하여 데이터를 반복하고 데이터베이스의 각 데이터를 데이터베이스에서 업데이트하려고했습니다. 그러나 나는 모든 데이터를 얻지 못하고있다. 아무도 날 이끌어 줄 수 있니? 사전에

감사합니다,

닉슨

TodoStatus.find({todo_id : req.params.todo_id}).done(function(errs, responsible){ 
           if(errs){ 
           } 
           else{ 

            function grabUsersName(todoRes, callback){ 
             async.forEach(todoRes, function (item, callback2){ 

              User.findOne ({id : item.user_id}).done(function (errses, user) { 
               if(errses) 
               { 
                console.log(errses); 
               } 
               else 
               { 
                item['name'] = user.name; 
               } 

              }); 
             }, function(eerr) { 
              callback(todoRes); 
             }); 
            } 

            grabUsersName(responsible, function(resultsa){ 
             console.log(resultsa); 

             return res.view({ 
              responsible: resultsa 
             }) 
            }) 



           } 
          }) 

답변

1

나는 해결책을 찾아 냈다.

문제는 grabUserName() 함수에 있습니다. 나는 async.forEach에 대한 콜백을 사용하지 않았다. 자세한 내용은 기능 코드를 확인하십시오.

function grabUsersName(todoRes, callback){ 
    async.forEach(todoRes, function (item, callback2){ 
      User.findOne ({id : item.user_id}).done(function (errses, user) { 
       if(errses){ 
        console.log(errses); 
       } 
       else{ 
        item['name'] = user.name; 
        callback2(); 
       } 
      }) 
    }, function(eerr) { 
       callback(todoRes); 
    }); 
}