2017-09-11 1 views
0

내 nodej와 함께 mongodb와 mysql을 사용하고 있습니다.mongodb에서 올바른 값을 얻는 방법은 무엇입니까?

employee.find({status:1}, function(error,response) { 
       for(i=0;i<=response.length;i++){ 
        var fileid = response[i]._id; 
        var sql = "SELECT * FROM EMPLOYEE WHERE `id` = '"+fileid+"'"; 
        con.query(sql, function (err, result) { 
    if (err) throw err; 
    console.log("Result: " + result); 
    }); 
        } 
       }) 

위의 코드는 나에게 정확한 기록과 결과를 제공하지만 내 로거 파일에 난 아래의 오류마다 점점 오전,하지만 난 내 서비스 로그를 기록 할 윈스턴을 사용하고 내 output.I을 얻기에 아무런 문제가 없다. 왜 내가이 오류에 대해 걱정하고 있는지 주된 이유는 내 노드 js APi가 매 8 시간마다 더 많이 또는 더 적게 내려 가고 내 데이터베이스가 유휴 상태가되지 않는다는 것입니다 (영원히 npm 모듈을 사용하여 영원히 서비스를 실행합니다). 그래서 나는 이것을 믿고 있습니다. 내 노드 processess 죽이는 이유가 될 수 있습니다. 아래는 제 실수입니다 도움이 필요하십니까?

"stack":["TypeError: Cannot read property '_id' of undefined"(var fileid = response[i]._id;)] 
+0

는 [I]'응답'에서 무엇을 얻을 결과는? – kumbhanibhavesh

답변

2

iresponse.length보다 작아야합니다 때문입니다. 배열 길이는 항상 마지막 색인보다 큽니다. 이 같은 예를 들어 ,

var arr = [1,2]; //length is 2 and last index value is 1 

변경하면 코드 : for(i=0;i<response.length;i++)

employee.find({status:1}, function(error,response) { 
        for(i=0;i<response.length;i++){ 
         var fileid = response[i]._id; 
         var sql = "SELECT * FROM EMPLOYEE WHERE `id` = '"+fileid+"'"; 
         con.query(sql, function (err, result) { 
         if (err) throw err; 
          console.log("Result: " + result); 
         }); 
         } 
        }) 
+0

버그 수정 .... 어떤 가능성? 내 웹 서비스가 특정 기간 후에 사망하게 될 이유가 될까요? – Jagadeesh

+0

예. 오류 처리가 수행되지 않으므로 서버가 중단됩니다. – Ved

+0

이러한 모든 오류가 내 서비스가 오래 실행 되더라도 영원히 계속 실행되는 한 번에 해결되면 어떻게됩니까? – Jagadeesh

관련 문제