var robject=[];
async.waterfall([
function (callback) {
for(var i in serial){
Router.find({},{r_serial_no:serial[i]},function (err,routerData) {
robject = robject.concat(routerData);
});
}
console.log('Robject= '+robject); //THIS RETURNS NULL
callback(null, robject);
},
function (blogs, callback) {
res.render('index', {dispatched_data:dispatched_data });
callback(null, 'Ended..' );
}
], function (err, result) {
console.log(result);
});
这是我的瀑布模型,这里我需要从schema.find方法访问robject
到该方法之外。但它总是返回null ..
如何访问??
答案 0 :(得分:1)
您有语法错误:
for(var i in serial){
Router.find({},{r_serial_no: i},function (err,routerData) {
robject = robject.concat(routerData);
});
}
" for" for"循环定义" i"作为每次迭代的数组中的下一项
答案 1 :(得分:1)
我在这里看到的问题是for...in
循环。即使您的流程Router.find
未完成,您的回调也会被触发。您可以尝试下面的代码,这可能会有帮助。
与serial
对象不同,请创建一个名为serials
的数组。
var robject=[];
async.waterfall([
function (callback) {
async.each(serials,
function(serial, localCb){
Router.find({},{r_serial_no:serial},function (err,routerData) {
robject = robject.concat(routerData);
localCb()
});
},
function(err){
console.log('Robject= '+robject);
callback(null, robject);
}
);
},
function (blogs, callback) {
res.render('index', {dispatched_data:dispatched_data });
callback(null, 'Ended..' );
}
], function (err, result) {
console.log(result);
});