[英]How to pass values from a middleware to a route in Express.js?
const router = require('express').Router()
const loggerMiddleware = (req, res, next) => {
console.log(`${req.method} ${req.path}`)
req.locals.isLogged = true
next()
}
router.get('/color', loggerMiddleware, (req, res) => {
console.log(req.locals.isLogged)
res.send('#ff0000');
})
When I run the code above, Node compiler gives me a warning of TypeError: Cannot set property 'isLogged' of undefined
.当我运行上面的代码时,Node 编译器给了我一个TypeError: Cannot set property 'isLogged' of undefined
。 Where do I go wrong?我在哪里 go 错了?
You need to put locals to res
not req
你需要把当地人放到res
而不是req
const router = require('express').Router()
const loggerMiddleware = (req, res, next) => {
console.log(`${req.method} ${req.path}`)
res.locals.isLogged = true
next()
}
router.get('/color', loggerMiddleware, (req, res) => {
console.log(res.locals.isLogged)
res.send('#ff0000');
})
I am not familiar with how to pass data from a middleware to a route, but this looks like a plain javascript issue.我不熟悉如何将数据从中间件传递到路由,但这看起来像是一个普通的 javascript 问题。 It looks like req.locals
is undefined.看起来req.locals
是未定义的。 Start by checking if req.locals
is undefined.首先检查req.locals
是否未定义。 If it is undefined, intialize it through req.locals = {}
.如果未定义,则通过req.locals = {}
对其进行初始化。 Then set req.locals.isLogged = true
.然后设置req.locals.isLogged = true
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.