微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。