发送特定于用户组Node Express的数据

时间:2016-07-18 11:26:48

标签: javascript node.js express passport.js

我想发送一个导航对象,该对象可以在特定于用户组的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。我究竟做错了什么。这是一个好方法吗?

1 个答案:

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