2014-12-12 9 views
-1

문서의 특정 subcollection의 status_code를 가져 오려고하지만 콘솔에 정의되지 않았습니다. 여기 subcollection에서 데이터를 읽을 수 없습니다.

내 코드입니다 :

router.route('/user/:_id/host/:_id/checkStatus/').post(function(req, res) { 
var finalList = []; 
Host.findOne({ 
    _id : req.params._id 
}, function(err, host) { 
    if (err) { 
     res.send(err); 
    } else { 
     var count = host.joinees.length; 
     var limits = []; 
     for (var i = 0; i < count; i++) { 
      limits.push(i); 
     } 
     async.eachSeries(limits, function(i, callback) { 
      var ID = host.joinees[i].userid; 
      console.log(ID); 
      console.log(req.body.userid); 
      if (ID === req.body.userid) { 
       finalList[0] = host.joinees[i].status_code; 
        console.log(finalList+"HHKHJKHKH"); 
      } 
      console.log(finalList+"aaaaaa"); 
      callback(); 
     }, function() { 
      console.log(finalList + '-------------'); 
      res.json({ 
       requestStatus : 1, 
       message : "success! Status Code Retrived", 
       joinRequestStatus : finalList 
      }); 
     }); 
    } 
}); 

});

+1

각 파트를 성공적으로 가져오고 있습니까? 내 말은'호스트'가 발견 된 것입니까? 어쩌면 길을 따라 어딘가에서 실패 할 수도 있습니다. – Pio

+0

@Pio : 디버깅을했지만 불행히도 컨트롤이 if 문에 들어 가지 않습니다. 코드 편집 중입니다. 확인해주십시오. –

+0

하지만'ID'와'req.body.userid'를 로그합니까? 또는 아무 것도 기록되지 않거나 빈 줄이 표시됩니다 (즉, 아무것도 찾지 못했음을 의미합니까? 호스트를 기록 했습니까?) – Pio

답변

0

그들은 서로 다른 유형이기 때문에 if 문과 일치하지 않는다고 생각합니다. 내 생각 엔 그 중 하나는 String (대부분 쿼리 결과)이고 다른 하나는 Number입니다. 당신이 mongoose 전화를 사용하는 경우 중 하나 당신은 단지 동일한 값 연산자 (==) 대신에 동일 가치 동일 유형의 연산자 (===)를 사용하거나 당신은 Object 예에 쿼리 결과를 변환 할 수 있습니다

두 가지 방법으로 그것을 해결할 수 쿼리 개체에 lean()을 입력 한 다음 결과를 처리하십시오.

관련 문제