2013-05-29 13 views
6

Próbuję przekazać moje zmienne sesji do moich szablonów kierownicy, ale utknąłem. Teraz używam tego w mojej funkcji app.configure:Express res.locals.someVariable use w hbs (szablon kierownicy)

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

To loguje poprawnie do konsoli, ale gdy próbuję użyć zmiennej „sesji” w moim szablonu kierownicy, nic nie pokazuje się. Tutaj jest częścią mojego szablonu:

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

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

     {{> footerPartial}} 
</body> 

Oto co jest rejestrowane przez konsolę:

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

Jakieś pomysły?

Odpowiedz

2

W końcu znalazłem moje rozwiązanie. Okazuje się, że dzwoni to:

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

po

app.use(app.router); 

to rzeczywiście musi być przed app.router, ale po

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

Tak. W trybie ekspresowym funkcje trasy są wykonywane * wewnątrz * aplikacji middleware app.router. – furydevoid

Powiązane problemy