如何查询猫鼬数据库以检索一项?
Posted
技术标签:
【中文标题】如何查询猫鼬数据库以检索一项?【英文标题】:How to query a mongoose database to retrieve one item? 【发布时间】:2018-09-11 01:45:44 【问题描述】:我需要有人帮我解决这个问题,所以我的数据库中每个类别都有几篇博文,但我只想在我的索引视图上显示每个类别的一篇博文(我正在使用 ejs) ,我该如何实现呢?我是 node.js 和猫鼬的新手。请大哥帮忙。谢谢!
我在下面发布了我的 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>
<% ); %>
【问题讨论】:
你试过Blog.findOne
而不是Blog.find
吗?
@Taki - 感谢您的回复。我尝试使用 Blog.findOne 方法。但是当我尝试渲染视图时出现错误。我认为问题是我不能在我的 app.js 中使用 Blog.findOne ,然后在我的 index.ejs 文件中使用 。
【参考方案1】:
要仅获取一篇博文,请使用 .findOne()
而不是 .find()
,因为它返回 Object
而不是 Objects
的 Array
,所以 .forEach()
将不起作用。
所以将Blog.find()
替换为Blog.findOne()
并删除.forEach()
行:
这个<% headlinesBlogs.forEach(function(blog) %>
最后一个<% ); %>
并像直接使用headLineBlogs
一样
<p class="hs-category"><a href="/index"><%=headlinesBlogs.category%></a></p>
您应该考虑将变量重命名为单数并删除 s
,因为它是一篇文章。
【讨论】:
以上是关于如何查询猫鼬数据库以检索一项?的主要内容,如果未能解决你的问题,请参考以下文章
不将数据从服务方法传递到猫鼬获取路由以使用 Angular IO 查询数据