2013-05-04 6 views
1

express 프레임 워크와 node.js를 사용하여 restapi를 작성하려고합니다. 나는 근본 원인을 찾을 수 없다는 오류에 직면하고있다.node.js에서 async를 사용하는 중에 오류가 발생했습니다.

는 'NODE_TYPE가'내가 코드를 디버깅 할 때, 나는 명확하게 NODE_TYPE를 참조

var GdbProcess = require('../../dao/gdb/processnds') 
var mongo = require('mongodb'); 
var async = require('async'); 

exports.executeService = function(req,res){ 
//Make the process object to query 
var manualProcessQuery = new Object(); 
manualProcessQuery.index = req.params.processmap; 
manualProcessQuery.key = "pid"; 
manualProcessQuery.value = req.params.pid; 
manualProcessQuery.event = req.params.event; 

var tempDataNodeToExecute = new Object(); 
//This function returns an object (dataNodeToExecute) to execute 
GdbProcess.getParametersbyNode(manualProcessQuery,function(err,dataNodeToExecute){ 
    if(err) res.send(err); 
    tempDataNodeToExecute = dataNodeToExecute; 
    var isSystem = false; 
    if (tempDataNodeToExecute.node_type =="system"){ 
     isSystem = true; 
    } 

    var count = 0; 

    async.whilst(
     function() { return isSystem }, 
     function (callback) { 
      //execute the function 
      executeSystem(dataNodeToExecute,function(err,executionStatus){ 
       if (err) callback(err); 
       count++; 
       if(executionStatus=="completed"){ 
        manualProcessQuery.value = tempDataNodeToExecute.pid; 
        manualProcessQuery.event = "completed"; 
         GdbProcess.getParametersbyNode(manualProcessQuery,function(err,dataNodeToExecute2){ 
         if(err) callback(err); 
         tempDataNodeToExecute = dataNodeToExecute2; 
         if (tempDataNodeToExecute.node_type == "manual"){ 
          isSystem = false; 
         } 

        }); 

        callback(); 
       } 
      }); 
     }, 
     function (err) { 
      if(err) res.send(err); 
      res.send("success"); 
     } 
    ); 
}); 

} 



var executeManual = function(prosNodeToExecute,callback){ 
//do something 
callback (null); 
} 

var executeSystem = function(prosNodeToExecute,callback){ 
//do something 
callback(null,"completed"); 
} 

함수에서 오는 값입니다

TypeError: Cannot read property 'node_type' of undefined 사용할 수 입니다 : 코드를 실행하는 동안 나는 다음과 같은 오류를 얻고있다 . 누군가 내가 여기서 근본 문제를 찾도록 도와 줄 수 있습니까?

답변

0

새 개체 인 tempDataNodeToExecute를 제거하고 대신 dataNodeToExecute를 사용하십시오. 속성이 사용되기 전에 개체의 null을 확인하여 프로그램이 충돌하지 않도록하는 것이 좋습니다.

+0

예 .. 저는 dataNodeToExecute를 시도했습니다. 그러나 그 같은 결과. 의도적으로 객체의 null을 확인하지 못하여 어디에서 충돌했는지 알아낼 수있었습니다. – codejammer

관련 문제