2016-07-18 3 views
0

ユーザグループに固有の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)); 
}); 
関連する問題