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);
});
это моя модель водопада, здесь мне нужно получить доступ к robject
из метода schema.find вне этого метода. но он всегда возвращает null.. как получить доступ к этому?
У вас есть синтаксическая ошибка:
for(var i in serial){
Router.find({},{r_serial_no: i},function (err,routerData) {
robject = robject.concat(routerData);
});
}
цикл "for" определяет "i" как следующий элемент в массиве каждой итерации
Проблема, которую я вижу здесь, заключается в 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);
});