Я пробовал использовать асинхронный. У меня есть функция маршрута с async.waterfall. Первая функция вызывает внешнюю функцию и выбирает всех пользователей в usersData Вторая функция через async.each вызывает внешнюю функцию для поиска информации для каждого пользователя. Я хочу пройти снова usersData с новостями значения 3-й функции. В 3-й функции на данный момент у меня есть async.each, и я смотрю данные для каждого пользователя. Мои проблемыНовичок async.waterfall
1) Во второй функции я не получаю информацию для каждого пользователя. 2) 3-я функция вызывается до 2-го, и я не получать новые данные Благодаря
router.post('/launch',function(req,res,next){
async.waterfall([
function(cb){
// fetch the global users
fetchUsers(usersData,cb);
},
function(usersData,cb){
async.each(usersData,
function(userdata,cb){
// fetch other data for each user
calcBalance(userdata, cb);
},function(err){
cb(err,usersData);
});
},
function(usersData,cb){
async.each(usersData,
function(userdata,cb) {
//watch the info with the news data
console.log(' 2 '+ JSON.stringify(userdata));
//console.log(3);
}
);
},
],
function(err,results){
console.log('Fin' + JSON.stringify(results));
res.render('synchros',{launch:'end'},results);
});
res.render('synchros',{launch:'end'});
});
function calcBalance(userData,cb){
var user_id=userData.id,
resultCalcBalance=0,
cats_id=[3,4,6],
tabData={};
async.each(cats_id,function(cat_id,cb){
switch (cat_id) {
case 3:
var comp = "<=";
break;
case 4:
var comp = "<=";
break;
case 6:
var comp = "<";
break;
}// fin du switch
var myquery = "select blabla+
//console.log(calcul_balance);
connectionMysql.query(myquery, function (err, rows, fields,cb) {
if (err) {
console.log('Error ' + err);
cb(err);
}
else if (rows.length != 0) {
if (rows != 0) {
}// end if
else {
}// end else
}); // end connectionMysql
},function(err){
cb(err,userData); // ?? I send the data here
});
cb(null, userData); // ?? I send the data here ??
}
, что происходит с данными, возвращавшихся из БД? Кроме того, убедитесь, что 'cb' вызывается внутри функции обратного вызова, которая передается' .query' (прямо сейчас она вызывается только, если есть ошибка, похоже) – lispHK01