Ошибка в выводе данных в шаблон ejs

178
09 июля 2018, 10:20

Есть коллекция sights, в нее вложена коллекция sight, которое имеет поле titleSight. Проблема с выводом значения titleSight в шаблон. Выдает ошибку: Cannot read property 'titleSight' of undefined. Как правильно вывести значение поле titleSight?

route.js

 app.get('/sight-overall/:id', function (req, res) {
    Promise.all([
        Photo.find({}),
        Sight.find({_id: req.params.id})
    ]).then(function (data) {
        console.log('data:', data);
        res.render('sight-overall.ejs', {photoList: data[0], sights: data[1], isAuth: req.isAuthenticated()});
    });

sights-overall.ejs

 <% var sights = JSON.stringify(sights) %>
 <% if (locals.sights) { %>
   <div class="sight-overall__header">
        <h2><%= sights.sight.titleSight%></h2>
   </div>
 <% } %>

содержимое data:

содержимое бд:

Answer 1

Шаблонизатор пытается создать строку из вашего объекта, поэтому вы получаете такой результат.

Возьмем, например, такой объект:

sights = {
    sight : {
      title : "title"
    }
}

И передадим в наш шаблон:

res.render('index', { data: sights });

Наш объект встает на свое место в ejs в виде строки поэтому мы получаем подобный результат: [object Object] при <%= data %>.

Но если во время шаблонизации мы обернем строку data (которая изначально была объектом) в JSON.stringify, то наша строка обратно станет объектом. Таким образом мы получим: {"sight":{"title":"title"}} при <%= JSON.stringify(data) %>

READ ALSO
Как отправить ajax запрос по клику на кнопку?

Как отправить ajax запрос по клику на кнопку?

Мне нужно что бы при клике на кнопку One\two\three\etc

286
Добавить margin-left 20px если браузер mozilla

Добавить margin-left 20px если браузер mozilla

Нужно для определенного класса, добавить margin-left если открыт в браузере Mozilla Firefox Я пишут так:

166
Как с помощью расширения получать то что ввел пользователь и заменять?

Как с помощью расширения получать то что ввел пользователь и заменять?

Это не в корыстных целях,пользователь будет сам включать эту возможность в определенных моментахНужно любые введеные данные пользователя...

189
&lt;p:wizard&gt; jsf тег скрывает значение параметра?

<p:wizard> jsf тег скрывает значение параметра?

У меня есть jsf страница, в нее запросом передается входной параметр hideЯ могу его прочитать и использовать, но он становится недоступным и возвращает...

231