问题描述
我刚开始表达。
我知道中间件在 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 (将#修改为@)