如何使用 ejs 从 mongoDB collection 中提取文档,以便每个文档在浏览器中出现一次?

How do I extract documents from a mongoDB collection using ejs such that each appears once on browser?

我希望有人能帮助我克服这个障碍。我正在尝试从 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') %>

从 index 路由可以看出,我正在使用 find() 函数。我知道这个函数会带回 collection 中的所有文档。 由于每个文档都有标题、副标题、作者等,因此我很难使用 forEach 循环确保每个文档在浏览器中出现一次。 我知道可以为我解决问题的唯一方法是定位 id,因为每个文档都有一个唯一的 id。但似乎我把一切都搞砸了,因为我不知道如何在我的 HTML 模板中完成这项工作,因为 findById() 似乎与 forEach() 不兼容。删除 forEach() from ejs 也阻止数据库中的所有图像出现在浏览器上。

我发现通过使用 mongoose nexted 模式,我能够获得我想要的相同结果。虽然这绝对不是最好的方法,但我能够使用它进入下一个级别,直到我获得更多 mongoose 和 ejs 的经验