如何解决如何使用ejs从mongoDB集合中提取文档,以使每个文档一次出现在浏览器中?
我希望有人帮助我克服这一障碍。我正在尝试从mongoDB
中提取一些具有相同属性的文档。我正在使用ejs
模板和猫鼬。
一切工作正常,只是每个文档在浏览器中出现多次,但我希望每个文档都按顺序出现一次。
我有以下代码:
indexSchema:
const indexSchema = mongoose.Schema({
title: String,subtitle: String,quote: String,image: String,imageCaption: String,author: String,qualification: String,body: String,createdAt: {
type: Date,default: Date.now
}
});
const Index = mongoose.model('Index',indexSchema)
module.exports = Index;
索引路径:
app.get("/",async (req,res) => {
await Index.find((err,index) => {
if (err){
console.log("Sorry,posts not found successfully");
console.log(err);
} else{
console.log("Collections received successfully!")
res.render("index",{index:index});
index.ejs:
<%- include ('partials/header') %>
<div class="container">
<% index.forEach(index => { %>
<img src="<%= index.image %>" class="img-fluid mt-0.5" alt="Responsive image">
<div class="jumbotron jumbotron-fluid mt-1">
<div class="container">
<div class="row">
<div>
<h3><%= index.title %></h3>
<h5><%= index.subtitle %>.</h5><i><%= index.quote %></i>
</div>
</div>
</div>
</div>
<h3 class="mb-4">Featured Posts</h3>
<a href="posts/" class="btn btn-outline-success">View All Posts</a>
<div class="card mt-4">
<div class="card-body">
<h4 class="card-title"><%= index.title %></h4>
<div class="card-subtitle text-muted mb-2">
<%= index.createdAt.toLocaleDateString(); %>
</div>
<div class="card-text mb-4">
<%= index.body %>
</div>
<div>
<a href="/posts/<%= index._id %>" class="btn btn-outline-primary">Read more<i class="fas fa-angle-double-right"></i></a>
</div>
</div>
</div>
<% }) %>
</div>
<%- include ('partials/footer') %>
从索引路由来看,很明显我正在使用find()
函数。我知道此功能会带回集合中的所有文档。
由于每个文档都有标题,副标题,作者等,因此我很难使用forEach
循环确保每个文档在浏览器中都出现一次。
我知道唯一可以解决的问题是针对ID,因为每个文档都有唯一的ID。但是似乎我搞砸了所有事情,因为我不知道如何在HTML模板中完成这项工作,因为findById()
似乎与forEach()
不兼容。拆下
forEach()
中的ejs
还会阻止数据库中的所有图像出现在浏览器中。
解决方法
我发现通过使用猫鼬后继模式,我可以达到我想要的结果。尽管这绝对不是最好的方法,但是我可以使用它进入下一个层次,直到我获得了更多有关猫鼬和ejs的经验
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。