无法从车把中的数组访问对象属性

时间:2020-01-17 15:03:49

标签: node.js express mongoose handlebars.js express-handlebars

即使看了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
        });
});

3 个答案:

答案 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 });
});