首页 > 解决方案 > 我可以用 Node.js Mongoose 填充整个目录吗?

问题描述

所以我可能用词很糟糕,但我现在被困住了。我正在尝试创建一个类似 Instagram 的网站,但遇到了问题。我有一个帖子架构,我存储所有发布的帖子,我使用posts.forEach将它们显示在主页上,我如何将评论架构插入主页获取路由,以便我可以循环浏览所有帖子和对于每一个单独循环浏览所有评论?我在这里真的很新,我真的不知道如何表达这个问题,但我希望你能明白我的意思。非常感谢提前!

app.get("/", function(req,res){
    //get all posts from db
    posts.find({}, function(err, allPosts){
        if(err){
            console.log(err);
        }
        else{
            res.render("home", {posts: allPosts});
        }
    });
});
<% posts.forEach(function(posts){ %>
    <div class="ui card" style="margin: 4% 20%;float: none;margin-bottom: 10px;">
        <div class="content">
            <div class="right floated meta">Time</div>
            <img class="ui avatar image" src="https://image.shutterstock.com/image-vector/person-icon-260nw-282598823.jpg"> Elliot
        </div>
        <div class="image">
            <img src="<%= posts.image %>" class="card-img-top" alt="...">
        </div>
        <div class="content">
                <span class="right floated">
                  <i class="heart outline like icon"></i>
                  Likes
                </span>
                <i class="comment icon"></i>
                Comments
              </div>
        <div class="container">
            <h5 class="card-title"></h5>
            <p class="card-text"><%= posts.description %></p>
        </div>
        <div class="extra content">
            <div class="ui large transparent left icon input">
                <i class="heart outline icon"></i>
                <input type="text" class="card-input" placeholder="Add Comment...">
            </div>
        </div>
    </div>
<% }) %>
var postSchema = new mongoose.Schema({
    image: String,
    description: String,
    comments: [
        {
           type: mongoose.Schema.Types.ObjectId,
           ref: "Comment"
        }
     ]
});
var commentSchema = new mongoose.Schema({
    text: String,
    author: String
});

标签: node.jsexpressmongoose

解决方案


您应该能够像这样填充:

app.get("/", async function(req,res){
    //get all posts from db
    const allPosts = await posts.find({}).populate('comments');
    res.render("home", {posts: allPosts});
});

使用 try-catch 处理错误(承诺拒绝)。


推荐阅读