即使看了how-to-iterate-over-array-of-objects-in-handlebars,我也无法使它工作。我正在使用猫鼬模型,并且想简单地遍历对象并显示标题和详细信息:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const IdeaSchema = new Schema({
title: {
type: String,
required: true
},
details: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now
}
});
mongoose.model('ideas', IdeaSchema);
这是我的车把模板:
{{#each ideas}}
<div class="card card-body">
<h4>{{title}}</h4>
<p>{{details}}</p>
</div>
{{/each}}
它显示2个空div,其中没有内容:
<div class="card card-body">
<h4></h4>
<p></p>
</div>
<div class="card card-body">
<h4></h4>
<p></p>
</div>
这是加载集合的代码
Idea.find({})
.sort({ date: 'desc' })
.then(ideas => {
res.render('ideas/index', {
ideas: ideas
});
});
答案 0 :(得分:0)
您没有在填充变量ideas
和设置把手的地方提供代码片段。请提供它,或者如果您不这样做,请从此开始:
您需要分配Mongoose为您编译的模型,并可能将其导出(如果在其他模块中使用):
export const IdeaModel = mongoose.model('ideas', IdeaSchema);
,然后使用它来填充变量ideas
,例如:
const ideas = IdeaModel.find({}); // fetch all ideas or add query criteria
然后将ideas
传递到车把template
中,例如:
const html = template({ ideas });
答案 1 :(得分:0)
我通过为把手安装开发依赖来解决此问题。查看有关https://stackoverflow.com/a/59704492/3141885
的详细信息答案 2 :(得分:0)
提供的代码可以解决
dbName.find({}).lean().then((ideas) => {
res.render('ideas/index', { ideas: ideas });
});