在 Handlebars 中嵌套 {{#each}} 304 错误

Nesting {{#each}} in Handlebars 304 error

我的嵌套 {{#each}} 不工作。 我是 Scraping 文章标题到我的页面,我正在使用 MongoDB/Mongoose。对于每篇文章(我命名为新闻),我希望用户 post 评论并查看以前的评论。 我的路线 console.log 和数据库本身显示我的 api 路线有效,但我无法显示评论。 我的车把有文章呈现到屏幕上,但是当获取评论时它 returns 一个 304。

文章显示如我所愿,只是评论有问题 {{#each News}} 是每篇文章 {{#each comment}} 嵌套在每个新闻中。

{{#each News}}
        <div class="panel-block is-active">
          <ul>
            <li>
              <div class="level-left">

                <h2  class="subtitle">
                  <a href="https://www.atptour.com{{this.url}}">
                  {{this.headline}}
                  </a>
                </h2>
              </div>
            </li>
            <li>
             <img width="348" src="https://www.atptour.com{{this.thumbNail}}">

            </li>
            <li>
             <p>{{category}}</p>
            </li>
            <li>
                {{!-- on click remove class .is-hidden on #getComments --}}
              <p id="showComments" data-id="{{this._id}}" >Comments</p>
            </li>
            <li>
              {{#each comment}}
              <article id="getComments" class="media is-hidden">
                <div class="media-content">
                  <div class="content">
                    <p>
                      <small>{{this.time}}</small>
                      <br />
                      {{this.body}}
                    </p>
                  </div>
                </div>
                <div class="media-right">
                  <button class="delete"></button>
                </div>
              </article>
              {{/each}}
              {{!-- on click remove class .is-hidden on #postComments --}}
              <a id="addComment" >Add Comment</a>
              {{!-- TO POST A COMMENT --}}
              <article id="postComment" class="media is-hidden">
                <div class="media-content">
                  <div class="field">
                    <p class="control">
                      <textarea
                        class="textarea"
                        placeholder="Add a comment..."
                      ></textarea>
                    </p>
                  </div>
                  <div class="level">
                    <div class="level-left">
                      <div class="level-item">

                        <a class="button is-info">Submit</a>
                      </div>
                    </div>
                  </div>
                </div>
              </article>
            </li>
          </ul>
        </div>
        {{/each}}

在{{#each评论}}中{{this.time}}和{{this.body}}是空白的。但是如果我简单地输入 {{this}} 我会得到每条评论的 _id。上下文一定是错误的,但我不知道为什么。评论与新闻正确关联,因为我可以检查 get 路由,并且所有内容都正确无误。

如果有帮助,这里是架构

new articles
const NewsSchema = new Schema({
  headline: {
    type: String,
    required: true,
  },
  thumbNail: {
    type: String,
    required: true,
  },
  category: {
    type: String,
    required: true,
  },

  url: {
    type: String,
    required: true,
  },

  // Comments will populate the News
  comment: [
    {
      type: Schema.Types.ObjectId,
      ref: "Comment",
    },
  ],
});
const News = mongoose.model("News", NewsSchema);

评论

const CommentSchema = new Schema({
  time: {
    type: Date,
    default: Date.now,
    required: true,
  },

  body: {
    type: String,
    required: true,
  },
});
const Comment = mongoose.model("Comment", CommentSchema);

根本不是车把的问题! 是路由问题。

我是这样做的:

app.get("/", function(req, res) {
db.News.find()
  .then(News => {
    res.render("index", { News });
  })
  .catch(err => {
    console.log(err);
  });

});

当我应该这样做的时候

app.get("/", function(req, res) {
db.News.find()
  .populate("comment")
  .then(News => {
    res.render("index", { News });
  })
  .catch(err => {
    console.log(err);
  });

});

我忘记填写 res.render。 (我正在填充 api 路线,但不是这 1!)