Я использую 'mongoose' и 'async'. Мой поиск также работает, но при последнем обратном вызове мои данные не будут переданы. Переменная всегда не определена. В документации к мангусте я не нашел подсказки. Я отметил указанное местоположение в коде.mongoose async callback undefined
async.whilst(
function() {
return noresult
},
function(callback) {
if (day >= 7 && newdate >= 1440) {
noresult = false;
callback("Nothing", newquery);
} else if (day < 7 && newdate >= 1440) {
day++;
newdate = 0;
delete newquery['search.'
' + d[day- 1]];
delete newquery['search.
' + d[day - 1] + '
b '];
newquery['search.' + d[day]] = {
$lte: newdate
}; newquery['search.' + d[day] + 'b'] = {
$gte: newdate
}; console.log("1 " + day + " " + newdate);
} else if (day >= 7 && newdate < 1440) {
newdate++;
console.log("2 " + day + " " + newdate);
} else if (day <= 7 && newdate < 1440) {
newdate++;
delete newquery['search.' + d[day - 1]];
delete newquery['search.' + d[day - 1] + 'b'];
newquery['search.' + d[day]] = {
$lte: newdate
};
newquery['search.' + d[day] + 'b'] = {
$gte: newdate
};
}
Data.find(newquery, function(err, newresult) {
if (err) {
callback(err);
}
if (!newresult.length) {
noresult = true;
if (day >= 7 && newdate >= 1440) {
callback("Nothing found");
} else {
callback(null, newquery);
}
} else {
noresult = false;
callback(null, newresult);
}
});
},
function(err, newresult) {
if (err) {
return res.status(404).send(err);
}
// At this point newresult is undefined
return res.send(newresult);
}
);
Я понимаю код, но понятия не имею, как это использовать в моем примере. Ошибка async очень неудачна. – Jack
@Jack Вместо использования async.whilst функция просто объявляет и использует нашу функцию while. Остальная часть вашего кода остается прежней. Если вы хотите, вы можете фактически расширить асинхронный объект с помощью нашей функции while, используя lodash mixin. –
Я знаю, но я не могу его запустить. – Jack