我是编程新手,最近更新了我的user.js模式,其中包括以下内容,以尝试捕获博客对象的观看次数。
title: String,
image: String,
body: String,
viewCount: {
type: Number,
default: 0,
},
我正在将数据存储在MongoDB中。我试图在网站上创建一个侧栏,以显示查看次数最多的博客文章。
我在索引页面上运行此路线。
// INDEX ROUTE
router.get("/blogs", function (req, res) {
var perPage = 10;
var pageQuery = parseInt(req.query.page);
var pageNumber = pageQuery ? pageQuery : 1;
var noMatch = null;
if (req.query.search) {
const regex = new RegExp(escapeRegex(req.query.search), 'gi');
Blog.find({name: regex}).skip((perPage * pageNumber) - perPage).limit(perPage).sort({"created": -1}).exec(function (err, blogs) {
if (err) {
throw new Error(err);
}
Blog.count({name: regex}).exec(function (err, count) {
if (err) {
throw new Error(err);
}
if (err) {
console.log("ERROR!");
} else {
if (blogs.length > 1) {
noMatch = "No blogs match that query, please try again";
}
Blog.find({}).sort({viewCount: -1}).limit(5).exec(function (err, topBlogs) {
if (err) {
console.log(err);
} else {
res.render("blogs/index", {blogs: blogs, topBlogs: topBlogs, current: pageNumber, pages: Math.ceil(count / perPage), currentUser: req.user, noMatch: noMatch, search: req.query.search});
}
});
}
});
});
} else {
Blog.find({}).skip((perPage * pageNumber) - perPage).limit(perPage).sort({"created": -1}).exec(function (err, blogs) {
if (err) {
throw new Error(err);
}
Blog.count().exec(function (err, count) {
if (err) {
console.log("ERROR!");
} else {
Blog.find({}).sort({viewCount: -1}).limit(5).exec(function (err, topBlogs) {
if (err) {
console.log(err);
} else {
res.render("blogs/index", {blogs: blogs, topBlogs: topBlogs, current: pageNumber, pages: Math.ceil(count / perPage), currentUser: req.user, noMatch: noMatch, search: false});
}
});
}
});
});
}
});
然后我在ejs中设置了一个以显示它。
<h3 id="topposts">Top Posts</h3>
<ul class="list-group">
<% topBlogs.forEach(function(topBlog, i){ %>
<li class="list-group-item"><a class="header" href="/blogs/<%= topBlog._id %>"><%= i+1 %>. <%=topBlog.title%></a></li>
<% }); %>
</ul>
</div>
输出有效,并且显示5个顶部链接,但是仅显示自从我对博客架构实施更改以来创建的前5个博客文章,即使我相对于前5个博客文章浏览了十几次页面创建的排名不会改变。我试图在数据库中查看它们,并且所有对象的viewCount都为零。我是否错过了更改对象的viewCount值的操作或步骤?