Подтвердить что ты не робот

Node.js Express3 - промежуточное программное обеспечение для добавления данных рендеринга во все запросы визуализации

Возможно ли через посредство промежуточного программного обеспечения или другого метода добавить данные рендеринга (второй вариант в res.render) для каждого вызова в маршрутах приложений.

Мое приложение использует паспорт для аутентификации, и я хотел бы, чтобы промежуточное ПО всегда добавляло пользовательскую информацию к каждому визуализированному шаблону.

В настоящее время каждый из моих вызовов res.render похож на. Я хотел бы удалить пользователя: req.user и добавить его к функции промежуточного программного обеспечения.

// Page 1
res.render("somepage1",{data : "somepage1", user : req.user});

// Page 2
res.render("somepage2",{data : "somepage2", user : req.user});
4b9b3361

Ответ 1

Express предоставляет app.locals и res.locals, который он автоматически объединяется с явными локалями, переданными в render обработчиком маршрута.

app.use(function(req, res, next) {
    res.locals.user = req.user;
    next();
});

В качестве альтернативы вы можете настроить исправление render. Я бы избегал этого, так как это дополнительные накладные расходы, но если по какой-то причине вам нужно было передать информацию, недоступную до запуска вашего обработчика маршрута, это вариант:

app.use(function(req, res, next) {
    var render = res.render;
    res.render = function(view, locals, cb) {
        if (typeof locals == 'object') locals.user = req.user;
        render.call(res, view, locals, cb);
    };
    next();
});

Ответ 2

Выяснил это.

Вы можете использовать локали в промежуточном программном обеспечении.

  app.use(function(req, res, next){
    res.locals.user = req.user;
    next();
  });

Затем в шаблонах используйте.

<h1>User Name:{{user.name}}</h1>

<h1>User Name:{{_locals.user.name}}</h1>удаp >