Передача данных в родительский вид | Экспресс.JS, Jade

#javascript #node.js #express #view

#javascript #node.js #выразить #Вид

Вопрос:

У меня есть следующий код в одном из моих контроллеров:

 module.exports.main = function (req, res) {
  if (req.isAuthenticated()) {
    res.render('dashboard', {
      title: 'Welcome to ENIGMA VI',
        data: {
          firstLogin: req.user.firstLogin,
          name: req.user.name,
          isAdmin: req.user.isAdmin
       }
    });
  } else {
     res.redirect('/?err='   encodeURIComponent('Please login first.'));
  }
};
  

Представление dashboard.jade расширяет другое вызываемое родительское представление layout.jade , и я использую данные, переданные dashboard.jade в этом представлении. Проблема в том, что это работает, однако я получаю следующую ошибку:

 TypeError: C:UsersRafayDropboxDevelopmentEnigmaapp_serverviewslayout.jade:34
    32|           #navbar-main.navbar-collapse.collapse
    33|             ul.nav.navbar-nav.navbar-right
  > 34|               - if(!data.firstLogin)
    35|                  renderApplicationMenu()
    36|               li.active
    37|                 a(href='/')

Cannot read property 'firstLogin' of undefined
  

Мой вопрос заключается в следующем: почему я могу получить доступ к data in layout.jade , хотя он выдает ошибку. Во-вторых, есть ли лучший способ передавать переменные в представлениях?

Комментарии:

1. Что вы имеете в виду, говоря, что можете получить доступ к данным, даже если произошла ошибка? Вы имеете в виду, что вы можете видеть ожидаемый вид?

2. @Svabael Я обращаюсь к data.firstLogin в layout.jade , чтобы задать отображение элемента в меню или нет в зависимости от значения. Я могу получить доступ к этой переменной, и меню отображается правильно, однако ошибка по-прежнему выдается.