在 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!)
我的嵌套 {{#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!)