У меня возникла проблема с попыткой получить значение из запроса внутри async.forEachOf
, который выполняется в зависимости от оператора if, поэтому я могу передать это значение в следующий шаг async.waterfall
Получение значения от async.forEachOf для перехода к следующему шагу async.waterfall
Вот код:
async.waterfall([
function(callback) {
db.query('select id from topics where description = ?',
[topic], function(err, rows){
callback(err, rows);
});
},
function(rows, callback) {
var query = rows[0].id
db.query('select id, background, viewOrder, description from topics where parent = ? order by viewOrder',
[query], function(err, rows){
callback(err, rows);
});
},
function(rows, callback){
var callbackRows = rows;
async.forEachOf(callbackRows, function(row, key, callback){
var topics
console.log('rows[key].id: ', callbackRows[key].id);
if (callbackRows[key].background == 0){
var query = callbackRows[key].id
db.query('select id, background, viewOrder, description from topics where parent = ? order by viewOrder',
[query], function(err, rows){
callbackRows[key].subTopics = rows;
topics = callBackRows;
console.log('rows from async.forEach db query: ', rows);
console.log("from inside asnyc.foreach", callbackRows);
});
}
callback();
}, function(){
callback(null, topics);
console.log('forEachOf callback called');
});
// console.log(topics);
}
], function(err, topics){
console.log("from end of waterfall: ", topics);
});
Я пытался сделать это несколькими способами, и ошибка настоящее время я получаю то, что темы не определен в строке callback(null, topics)
в async.forEachOf
раздел
Слишком устал писать больше на данный момент, я ложился спать. Если это понадобится позже, я позабочусь об этом. Тем временем, что я пытаюсь сделать, это добавить результаты из запроса в конце async.forEachOf
к элементу в массиве значения, возвращаемого предыдущим запросом. Оттуда я хочу отправить поместить это в объект ответа в выражении, в заключительном обратном вызове в async.waterfall
.
Я все еще не определен с этим изменением – realisation
Я получаю журнал консоли от завершающего обратного вызова до конца 'async.forEachOf'. Кроме того, когда я пытаюсь поставить триггер callback для 'async.forEachOf' в инструкции if, я не получаю console.log заключительного обратного вызова' async.waterfall'. – realisation
У вас есть эта строка прямо здесь 'themes = callBackRows;', поставьте 'console.log ('themes', themes)' прямо после этой строки и посмотрите, имеет ли значение значение в конце выполнения forEachOf. –