Nodejs 如何响应本地人在每个 app.use 上获得视图

Nodejs how response locals on each get view on app.use

我正在尝试通过 cookie 处理简单的用户信息,这些信息通过 res.render 在我的布局中可见,但我觉得这很乏味,因为它总是简单的信息,我必须在每个 .get () 中执行此操作,然后在 app.js 中我这样做了:

app.js

app.use(function(req,res, next){
  var cookies = req.cookies;
  if(!cookies.UserData){
    console.log('cookies no exists');
  }
  else{
    console.log('cookies');
    res.locals.user = cookies.UserData;
    next();
  }

});
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

layout.ejs

<%- user.username %>

但是"user"没有定义,但是在我的error.ejs生成了一个404的时候,我把它放进去"<%- user.username %>"就可以了。

但它只适用于 404 次捕获,一般情况下无效,我做错了什么?我该怎么做?

how I solved it

在我的路由器级中间件中:

var express = require('express');
var router = express.Router();


router.use(function(req,res, next){
  var cookies = req.cookies;
  if(!cookies.UserData){
    console.log('cookies no exist');
  }
  else{
    console.log('cookies');
    res.locals.user = cookies.UserData;
    next();
  }
});

I put it first in the router-level middleware, above all the other http methods