Есть следующий код:
app.get('/some', function(req, res) {
var parm1 = parseFloat(req.query.parm1),
parm2 = parseFloat(req.query.parm2),
parm3 = parseFloat(req.query.parm3),
parm4 = parseFloat(req.query.parm4);
if (parm1 && parm2 && parm3 && parm4) {
if (...) {
res.json({ message: 'Some ok 1' });
} else {
...
var data = []; // Массив с тем, что будем выводить
for(var i = 0; i < some1; i++) {
...
for(var s = 0; s < some2; s++) {
Model.count({ ... }, function(err, count){
if(err) throw err;
if (count > 0) {
var d = {
...
length: count
}
data.push(d); // Кладем в массив
}
});
}
}
res.json({ message: 'Some ok 2', content: data }); // Выводим
}
} else {
return res.status(403).send({ message: 'Some error' });
}
});
Логика такова: получаем во вложенном цикле количество необходимых записей в БД и пишем данные в массив data, затем отдаем пользователю.
Видимо из-за асинхронности отдается пустой массив. Как сделать так, чтобы данные отдавались по завершении всех операций в циклах?
P.S. В условии выборки Model.count({ ... }) используются i и s из циклов.