无法在Nodejs中访问db结果,它总是返回null
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 ..如何访问?
你有语法错误:
for(var i in serial){ Router.find({},{r_serial_no: i},function (err,routerData) { robject = robject.concat(routerData); }); }
“for”循环在每次迭代中将“i”定义为数组中的下一项
我在这里看到的问题是在for...in
循环中。 即使您的stream程即Router.find
未完成,您的callback也会被Router.find
。 你可以尝试下面的代码,这可能会有所帮助。
不像你的serial
对象,请创build一个名为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); });