Могу ли я заполнить весь каталог с помощью Node.js Mongoose? - PullRequest
0 голосов
/ 05 ноября 2019

так что я, вероятно, сформулировал это очень плохо, но я застрял прямо сейчас. Я пытаюсь создать сайт, похожий на 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
});

1 Ответ

0 голосов
/ 05 ноября 2019

Вы должны иметь возможность заполняться так:

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 для обработки ошибки (отклонение обещания).

...