Я пытаюсь отобразить количество документов в моей базе данных MongoDB всякий раз, когда пользователь получает домашнюю страницу моего веб-приложения. Следующая диаграмма показывает, как я хотел реализовать это: https://liveuml.com/view/5db6af5e663178088afee61e
Вот соответствующий фрагмент кода для маршрутизатора
app.route('/')
.get(
(req, res, next) => {
res.locals.countOfWords = countAllWords();
next();
},
(req, res, next) => {
renderIndex(req, res);
}
);
И соответствующий фрагмент кода для контроллера
function countAllWords() {
myModel.estimatedDocumentCount({}, (err, result) => {
return result; // returns an object instead of an integer
});
}
function renderIndex(req, res) {
res.render('index', {
'countOfWords' : res.locals.countOfWords
});
}
Однако, result
, который возвращает Контроллер, является объектом Query, а не целым числом. Итак, я вижу There are [object Object] documents in your database
на веб-странице вместо чего-то вроде There are 12 documents in your database
.
Что делает меня еще более запутанным: когда я заменяю выражение return result
на console.log(result)
, я вижуожидаемое число в консоли.
function countAllWords() {
myModel.estimatedDocumentCount({}, (err, result) => {
console.log(result); // displays the number as expected
});
}
У меня вопрос: как я могу передать номер обратно маршрутизатору вместо объекта, чтобы он мог отображаться на веб-странице?
Я использую последние версии NodeJS, ExpressJS и Mongoose.
Большое спасибо за вашу помощь.