2013-05-29 29 views
6

Tôi đang cố gắng chuyển các biến phiên của tôi vào các mẫu handlebars của tôi nhưng tôi đang gặp khó khăn. Ngay bây giờ tôi đang sử dụng này trong chức năng app.configure tôi:Express res.locals.someVariable sử dụng trong hbs (handlebars template)

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

Nó ghi một cách chính xác để giao diện điều khiển, nhưng khi tôi cố gắng sử dụng các "phiên" biến trong mẫu tay lái của tôi, không có gì xuất hiện. Dưới đây là một phần của mẫu của tôi:

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

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

     {{> footerPartial}} 
</body> 

Dưới đây là những gì đang được đăng nhập bởi giao diện điều khiển:

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

Bất kỳ ý tưởng?

Trả lời

2

Cuối cùng tôi đã tìm thấy giải pháp của mình. Nó chỉ ra rằng tôi đã gọi này:

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

sau

app.use(app.router); 

Nó thực sự cần phải được trước khi app.router, nhưng sau khi

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

Yes. Trong thể hiện, các hàm tuyến đường của bạn được thực thi * bên trong * phần mềm trung gian của ứng dụng. – furydevoid

Các vấn đề liên quan