我目前正在尝试制作一个虚假的博客样式页面。所有相关信息都在MongoDB中,我正在使用forEach循环将其提取。
`<% blogs.forEach(function(blog){ %>
<img src="<%= blog.image %>" >
<a href="/blogs/<%= blog._id%>"><%=blog.title%></a>
<span><%= blog.created.toDateString() %></span>
<p><%- blog.body.substring(0, 100) %>...</p>
<% }) %>`
创建/编辑帖子时,数据库包含这些对象。当您运行forEach时,它将从数据库的开头开始,然后向前进行。我试图弄清楚如何使之反向,因为一个典型的博客网站会在发布新内容时将较早的帖子向下推到页面上(到目前为止,它显示的是第一篇文章的第一篇,第二篇文章的第二篇,等等)。 / p>
我考虑过使用.count()mongoose命令创建一个for循环并限制其长度,但是我似乎无法弄清楚如何将其与数据库中的各个对象相关联。基本上,我正在尝试将此forEach转换为使用变量(例如[i])。
答案 0 :(得分:0)
使用猫鼬。它是一个MongoDB对象建模工具,旨在在异步环境中工作。 Mongoose使使用MongoDB变得非常容易。您可以尝试使用这些工具(其中一些可能无法正常使用),希望对您有所帮助。
model_name.find({}).sort('-date').exec(function(err, docs) { ... });
model_name.find({}).sort({date: -1}).exec(function(err, docs) { ... });
model_name.find({}).sort({date: 'desc'}).exec(function(err, docs) { ... });
model_name.find({}).sort({date: 'descending'}).exec(function(err, docs) { ... });
model_name.find({}).sort([['date', -1]]).exec(function(err, docs) { ... });
model_name.find({}, null, {sort: '-date'}, function(err, docs) { ... });
model_name.find({}, null, {sort: {date: -1}}, function(err, docs) { ... });