2016-07-18 1 views
0

Я хочу отправить объект навигации, который может быть отображен в приложении Express, специфичном для группы пользователей. Я хоть один способ сделать это, чтобы добавить это промежуточное программное обеспечение для каждого маршрута:Отправлять данные, относящиеся к группе пользователей. Узел Express

var nav = function() { 
    return function(req,res,next) { 
     res.nav = []; 
     var assignednav = [{ 
       link: '../console/my-ads', 
       text: 'My Ads' 
      }, 
      { 
       link: '../console/snippet', 
       text: 'Snippet' 
      }, 
      { 
       link: '../console/answer', 
       text: 'Answer Calls' 
      }]; 
     if (req.user && req.user.companyid != null){ 
      res.nav = assignednav; 
     } else { 
      res.nav = []; 
     } 
     next(); 
    } 

}; 

А затем прикрепить его к маршрутам я заинтересован в получении объекта.

router.get('/analytics', assignedUser(), function(req, res) { 
    res.render('console/analytics', nav()); 
}); 

В настоящее время я получаю код: Cannot set property 'nav' of undefined. Что я делаю не так. Это хороший подход?

ответ

0

Вы получаете неопределенную ошибку, потому что ваша функция никогда не получает объект res для начала.

router.get('/analytics', assignedUser(), function(req, res) { 
    res.render('console/analytics', nav()); 
}); 

Что вы хотите сделать, так это передать объекты в функцию, например.

router.get('/analytics', assignedUser(), function(req, res, next) { 
    res.render('console/analytics', nav(req, res, next)); 
});