Node.js / Express делает переменную доступной в макете на всех маршрутах - PullRequest
8 голосов
/ 30 августа 2011

Как только пользователь вошел в систему, я хочу отобразить его имя пользователя в заголовке, который в настоящее время является частью layout.jade.Их данные указаны в req.currentUser, но req недоступен из макета.

Я знаю, что могу сделать следующее для каждого из render вызовов в моих маршрутах:

res.render('help', {
    locals: { currentUser: req.currentUser }
});

Но, похоже, должен быть лучший способ, чем добавлять { currentUser: req.currentUser } в locals каждый из моих маршрутов.

Я все еще новичок в Node, поэтому извиняюсь, если это глуповопрос.

1 Ответ

8 голосов
/ 30 августа 2011

Вам необходимо использовать dynamic helper. Это функция, которая передает объекты request и response, как любой маршрут или промежуточное программное обеспечение, и может возвращать данные, специфичные для текущего запроса. (включая данные сеанса)

Итак, в app.js:

app.dynamicHelpers({
  currentUser: function (req, res) {
    return req.currentUser;
  }
});

и в вашем шаблоне:

<div><%= currentUser %></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...