node.js排序对象(mongoose,express,ejs)
我有这个问题在我的博客应用程序的索引中排序我的数据对象。我有一个基于Express的博客应用程序使用ejs和使用mongoose的mongoDB。我想要的是对结果进行排序,以便最新的帖子从顶部开始。此时它将显示顶部的第一个帖子。
app.js / mongoose架构
blogSchema = new mongoose.Schema({
title: String,
image: String,
body: String,
created: {type: Date, default: Date.now}
});
var Blog = mongoose.model("Blog", blogSchema);
app.js /索引路线
app.get("/blogs", (req, res)=>{
Blog.find({}, (err, blogs)=>{
if(err){
console.log("Error!");
console.log(err);
} else {
res.render("index", {blogs: blogs});
}
});
});
index.ejs foreach
<% blogs.forEach(function(blog){ %>
<img alt="img" src="<%= blog.image %>">
<a href="/blogs/<%= blog._id %>"><%= blog.title %></a>
<span><%= blog.created.toDateString() %></span>
<p><%- blog.body.substring(0, 200) %>...</p>
<a href="/blogs/<%= blog._id %>">Read More</a>
<% }) %>
有谁知道我怎么能做到这一点?
回答如下:你可以使用猫鼬的sort()
方法:
Blog.find((err, blogs) => {
if (err) {
console.log(err);
} else {
res.render("index", { blogs: blogs });
}
}).sort({ created: 'desc' });