Я работаю над учебным курсом MDN для ExpressJS с Mongoose и Async , и в какой-то момент я пытаюсь выполнить запрос для всех книг, а затем сопоставить это с дополнительными запросами к найдите количество BookInstances для каждой книги. (Например, я хочу показать таблицу всех книг в базе данных, а затем перечислить, сколько у нас копий)
// Display list of all books.
exports.book_list = function(req, res) {
Book.find({}, 'title author')
.exec(function(err, list){
if (err) {return next(err);}
async.map(list, function(book, next){
BookInstance.countDocuments({book: book.id}, function(err, count){
// Try and add the bookinstance count to the book object
// use next(null, book);
});
}, function(err, modified_list){
res.send(modified_list);
});
});
};
Однако следующее ничего не делает:
book.count = count
next(null, book);
И не делает:
book.set("count", count");
next(null, book);
В обоих примерах предмет остался неизменным. Однако следующее возвращает то, что я ожидал:
var obj = {book: book, count: count};
next(null, obj);
Документы Mongoose описывают, что find () возвращает документы, но я не могу понять, почему они кажутся неизменяемыми или что такое документ на самом деле. Есть ли способ для меня, чтобы просто добавить свойство count
к исходному возвращенному объекту и не переносить его в другой объект?