如何解决Express 中间件:它如何知道何时处理 req 和 res?
我刚开始表达。
我知道中间件在 HTTP 请求和响应周期中可以访问 req
和 res
,但是中间件函数如何知道何时处理它们?
例如。:
函数是不是在 HTTP 请求进来时执行一次,然后在响应出去时再执行一次?
我有以下示例:在我的 express 应用程序中加载了一个中间件:
app.use('/',authenticateUser);
export const authenticateUser = catchErrors(async (req,_res,next) => {
console.log('executing middleware/authenticateUser')
const token = getAuthTokenFromrequest(req);
if (!token) {
throw new InvalidTokenError('Authentication token not found.');
}
const userId = verifyToken(token).sub;
if (!userId) {
throw new InvalidTokenError('Authentication token is invalid.');
}
const user = await User.findOne(userId);
if (!user) {
throw new InvalidTokenError('Authentication token is invalid: User not found.');
}
req.currentUser = user;
console.log('check req: ',req) // never prints
console.log('check _res: ',_res) // always prints
next();
});
这行 console.log('check _res: ',_res)
总是执行,但 console.log('check req: ',req)
从不打印任何东西,就像它被跳过一样。
这对我来说毫无意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。