Не удается получить доступ к свойству объекта из массива в Handlebars - PullRequest
0 голосов
/ 17 января 2020

Даже взглянув на как перебрать массив объектов в руле , я не смог заставить его работать. Я использую модель mon goose и хочу просто перебирать объекты и отображать заголовок и детали:

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

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Я решил эту проблему, установив зависимость dev для руля. Подробнее см. { ссылка }

0 голосов
/ 17 января 2020

Вы не предоставили фрагмент кода, в котором вы заполняете переменную ideas и настраиваете рули. Пожалуйста, предоставьте это, или, если вы этого не делаете, начните с этого:

Вам необходимо назначить и, вероятно, экспортировать (если используется в другом модуле) модель Mon goose, для которой вы компилируете:

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 });
...