在node.js中使用async时出错
error while using async in node.js
我正在尝试使用express框架和node.js编写restapi。我正面临一个错误,我无法找到根本原因。在尝试执行代码时,我得到以下错误:
TypeError: Cannot read property 'node_type' of undefined
,其中'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");
}
当我调试代码时,我清楚地看到node_type可用。有没有人能帮我找出问题的根源?
删除新对象tempDataNodeToExecute并使用dataNodeToExecute来代替它,并且在使用其属性之前检查对象的null是一个很好的做法,以便程序不会崩溃。
相关文章:
- javascript中的数组出错
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 在Meteor项目中安装并包含npm模块后出错
- 解析JSON并从中删除对象会出错
- AngularJS指令出错-无法读取属性'编译'的未定义
- 使用javascript在MVC中查找网格长度时出错
- 尝试调用AngularJS上的函数时出错
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- jQuery加载的async和ready函数不工作
- 全局安装gull后出错
- 我在代码点火器中出错
- Java脚本将URL转换为已保存的URL时出错
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- Backbone.js将模型绑定到视图时出错
- 超过了async.detect最大调用堆栈大小
- 使用async.parallel时出错
- 在node.js中使用async时出错
- 无法读取属性'async'自定义类出错
- 为什么node.js中的async在循环中出错
- 使用ES7 async/await与node, webpack和babel-loader时出错