Javascript 在node.js中使用异步时出错
我正在尝试使用expressframework和node.js编写restapi。我面临一个错误,我无法找到根本原因。我在尝试执行代码时遇到以下错误:Javascript 在node.js中使用异步时出错,javascript,node.js,asynchronous,express,Javascript,Node.js,Asynchronous,Express,我正在尝试使用expressframework和node.js编写restapi。我面临一个错误,我无法找到根本原因。我在尝试执行代码时遇到以下错误: TypeError:无法读取未定义的属性“node\u type”其中“node\u type”是来自函数的值 var GdbProcess = require('../../dao/gdb/processnds') var mongo = require('mongodb'); var async = require('async'); ex
TypeError:无法读取未定义的属性“node\u type”
其中“node\u 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");
}
当我调试代码时,我清楚地看到node_类型是可用的。有人能帮我找到问题的根源吗?删除新对象tempDataNodeToExecute并使用dataNodeToExecute代替它,最好在使用对象的属性之前检查对象是否为null,这样程序就不会崩溃。是。。我尝试了dataNodeToExecute。但结果是一样的。我故意不检查对象的空值,以帮助我找出它在哪里崩溃