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
我正在尝试通过 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