Express 中间件:它如何知道何时处理 req 和 res?

问题描述

我刚开始表达。

我知道中间件在 HTTP 请求和响应周期中可以访问 reqres,但是中间件函数如何知道何时处理它们? 例如。: 函数是不是在 HTTP 请求进来时执行一次,然后在响应出去时再执行一次?

我有以下示例:在我的 express 应用程序中加载了一个中间件:

app.use('/',authenticateUser);

函数 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 (将#修改为@)