Вдохновившись этим ответом https://stackoverflow.com/a/21571589/9036255 Я решил скопировать это в свой собственный код.Я обнаружил, что он не дает никакого ответа.
function getCallback(callbackTrash) {
var Books = mongoose.model('Book');
Books.find({'username': name[usernames]}, function (err, result) {
callbackTrash(result);
});
}
getCallback(function(result) {
books.push(result);
});
books
- это просто массив.Когда я позже сохраняю консоль, он возвращает «[]»
Если я изменяю books.push
на console.log
, он корректно регистрирует все результаты.
Мой вопрос заключается в том, какполучить результат для добавления в массив книг?
У меня нет опыта работы с асинхронными вещами.Какой практический ответ без крутой кривой обучения?
Вот мой более широкий контекст:
exports.timeline = function(req, res) {
var Followers = mongoose.model('Follow');
Followers.find({'follower': req.user.username}, function(err, followerResult) {
var name = [req.user.username];
var books = [];
function addName(username) {
name.push(username);
}
for(var user in followerResult) {
addName(followerResult[user]['followed']);
}
for(var usernames in name) {
function getCallback(callbackTrash) {
var Books = mongoose.model('Book');
Books.find({'username': name[usernames]}, function (err, loadOfBollocks) {
callbackTrash(loadOfBollocks);
});
}
getCallback(function(result) {
books.push(result);
});
}
console.log(books);
res.send(books);
});
}