我想发送一个导航对象,该对象可以在特定于用户组的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 :(得分: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));
});