2016-07-18 11 views
0

Ich möchte ein Navigationsobjekt senden, die in einer Express-Anwendung wiedergegeben werden kann, die auf die Benutzergruppe spezifisch ist. Ich obwohl eine Möglichkeit, es zu tun diese Middleware zu jeder Route hinzuzufügen war:Senden von Daten für Benutzergruppe Knoten 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(); 
    } 

}; 

Und dann hängen Sie es an den Strecken Ich bin interessiert an das Objekt.

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

Derzeit erhalte ich einen Fehler: Cannot set property 'nav' of undefined. Was mache ich falsch. Ist das ein guter Ansatz?

Antwort

0

Sie erhalten den undefinierten Fehler, weil Ihre Funktion nie die res mit dem Objekt beginnen wird.

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

Was Sie tun möchten, ist die Objekte in die Funktion übergeben, wie folgt.

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