每当用户检索我的Web应用程序的主页时,我都试图显示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
是查询对象,而不是整数。因此,我在网页上看到的是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。
非常感谢您的帮助。
答案 0 :(得分:-1)
在猫鼬中仅使用async await和count():
async countAllWords()=>{
let countOfmymodel = await userModel.count({})
}