2013-05-29 34 views
6

Ich versuche, meine Sitzungsvariablen an meine Lenkervorlagen übergeben, aber bin stecken geblieben. Im Moment benutze ich dies in meiner app.configure Funktion:Express res.locals.someVariable Verwendung in hbs (Lenker Vorlage)

app.use(function(req, res, next){ 
     res.locals.session = req.session; 
     console.log(res.locals.session); 
     next(); 
}); 

Es protokolliert korrekt an die Konsole, aber wenn ich versuche, die „Sitzung“ Variable in meinem Lenker Vorlage zu verwenden, nichts erscheint. Hier ist ein Teil meiner Vorlage:

<body> 
     <nav> 
      {{> topBarPartial}} 

      {{> secondaryBarPartial}} 
     </nav> 
     <div> 
      <p>before</p> 
      {{session}} 
      <p>after</p> 
      {{> mainPartial}} 
     </div> 

     {{> footerPartial}} 
</body> 

Hier ist das, was von der Konsole angemeldet wird:

{ cookie: 
    { path: '/', 
    _expires: null, 
    originalMaxAge: null, 
    httpOnly: true }, 
    userId: 45253262, 
    name: 'Austin' } 

Irgendwelche Ideen?

Antwort

2

Ich habe endlich meine Lösung gefunden. Es stellt sich heraus, dass ich dies rief:

app.use(function(req, res, next){ 
     res.locals.session = req.session; 
     console.log(res.locals.session); 
     next(); 
}); 

nach

app.use(app.router); 

Es muss tatsächlich vor dem app.router sein, aber nach

app.use(express.session({ 
     secret: '***********' 
    })); 
+0

Ja. In express werden Ihre Routefunktionen * innerhalb * der app.router-Middleware ausgeführt. – furydevoid

Verwandte Themen