Я новичок в node/javascript, поэтому моя проблема, вероятно, тривиальна, но это вызывает у меня проблемы не меньше.Возвращаясь из вложенных функций
У меня есть следующий код. Он успешно проверяет базу данных как для значений Unit
, так и для Owner
. Проблема в том, что код, следующий за оператором if else if (Owner){
, выполняется, как ожидается, однако ПОСЛЕ того, что программа никогда не попадает в строку return reply(output);
, что, я надеюсь, она должна.
Я думаю, что это так, что я возвращаюсь из кода Owner.findOne(...
.
Может ли кто-нибудь увидеть, что я делаю неправильно?
exports.sale = {
tags: ['api'],
validate : {
//blah blah blah
},
handler : function(request, reply) {
var output = {
success: true,
operations: [],
epoch: Date.now()
};
Unit.findById(request.payload.deviceNumber, function(err, device) {
if (err) {
//blah blah blah
}
if (device) {
Owner.findOne({OwnerId: device.Owner}, function(err, Owner) {
if (err) {
//blah blah blah
}
else if (Owner){
//make changes to output.operations
}
});
} else {
output.success = false;
}
return reply(output);
});
}
};
Возможный дубликат [Почему моя переменная неизменна после изменения ее внутри функции? - Асинхронная кодовая ссылка] (http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside-of-a-function-asynchron) –