我需要有人来帮助我,所以我的数据库中每个类别都有几篇博文,但我只想在索引视图中显示每个类别的一篇博文(我使用的是ejs) ,我该怎么做?我是node.js和mongoose的新手。请帮助一个兄弟。谢谢!
我在下面发布了我的app.js和index.ejs文件。
app.get("/index", function(req, res, next){
output = {
sports: [],
fashion: [],
food: [],
headlines: [],
};
async.parallel([
function(cb){
Blog.find({"category": "sports"}).sort({"created": -1}).exec(function(err, sportsBlogs){
if (err){
console.log(err);
} else {
output.sport = sportsBlogs;
cb(null, sportsBlogs);
}
});
},
function(cb) {
Blog.find({"category": "fashion"}).sort({"created": -1}).exec(function(err, fashionBlogs){
if (err){
console.log(err);
} else {
output.fashion = fashionBlogs;
cb(null, fashionBlogs);
}
});
},
function(cb) {
Blog.find({"category": "food"}).sort({"created": -1}).exec(function(err, foodBlogs){
if (err){
console.log(err);
} else {
output.food = foodBlogs;
cb(null, foodBlogs);
}
});
},
function(cb) {
Blog.find({"category": "headlines"}).sort({"created": -1}).exec(function(err, headlinesBlogs){
if (err){
console.log(err);
} else {
output.headlines = headlinesBlogs;
cb(null, headlinesBlogs);
}
});
}
], function(err, results){
res.render("index", {
sportsBlogs: output.sports,
fashionBlogs: output.fashion,
foodBlogs: output.food,
headlinesBlogs: output.headlines
});
});
});
<% headlinesBlogs.forEach(function(blog){ %>
<div class="col span-2-of-3 headlines-story-container">
<img class="headline-image" src="<%= blog.storyImage %>">
<p class="hs-category"><a href="/index"><%=blog.category%></a></p>
<h3 class="hs-title"><a href="/index"><%=blog.title%></a></h3>
<p class="hs-story-intro"><%= blog.body.substring(0, 200) %>... <a href="/index/<%= blog._id %>">Continue Reading</a></p>
<div class="col span-1-of-2 hs-author-box">
<a href="/"><img src="<%=blog.authorImage %>"></a>
</div>
<div class="col span-1-of-2 hs-author-text">
<h5 class="hs-author"><a href="/index">By <%=blog.author%></a></h5>
</div>
</div>
<% }); %>
答案 0 :(得分:0)
仅获取一篇博文,使用<stx-action-create disabled="isEnabled()"></stx-action-create>
代替.findOne()
,因为它返回.find()
而不是Object
Array
,{ {1}}无效。
所以用Objects
替换.forEach()
并删除Blog.find()
行:
这Blog.findOne()
和最后一个.forEach()
并直接使用<% headlinesBlogs.forEach(function(blog){ %>
<% }); %>
您应该考虑将变量重命名为单数并删除headLineBlogs
,因为它是一个帖子。