Dependencies 如何在膝关节炎中实施中间件之间的依赖关系?

Dependencies 如何在膝关节炎中实施中间件之间的依赖关系?,dependencies,middleware,koa,Dependencies,Middleware,Koa,我的应用程序中有一些中间件: loggedInUserHandler:加载当前用户并将其保存到上下文中 notificationHandler:从上下文获取当前用户。然后加载此用户的通知并将其保存到上下文中 routeHandler:从上下文获取当前用户和通知,并将其加载到正确的视图中 基本上,每个中间件都可能依赖于以前的中间件生成并附加到上下文的数据。现在,我只是按照正确的顺序加载中间件,如下所示: app.use(loggedInUserHandler); app.use(notific

我的应用程序中有一些中间件:

  • loggedInUserHandler
    :加载当前用户并将其保存到上下文中
  • notificationHandler
    :从上下文获取当前用户。然后加载此用户的通知并将其保存到上下文中
  • routeHandler
    :从上下文获取当前用户和通知,并将其加载到正确的视图中
基本上,每个中间件都可能依赖于以前的中间件生成并附加到上下文的数据。现在,我只是按照正确的顺序加载中间件,如下所示:

app.use(loggedInUserHandler);
app.use(notificationHandler);
app.use(routeHandler);

但是,我想知道是否有更好的方法来实现这一点,或者声明每个中间件的依赖关系?然后,如果以错误的顺序调用它们,就会抛出错误或类似的错误。我在膝关节炎中找不到很多信息,所以我想知道是否有合适的方法来做。有什么建议吗?

如果要调用下一个中间件,可以使用next()函数。
在膝关节炎中,您需要异步调用下一个函数并等待它完成。 例如


如果要调用下一个中间件,可以使用next()函数。
在膝关节炎中,您需要异步调用下一个函数并等待它完成。 例如


我最初的想法是创建一系列这些函数,然后在App.Sube中使用这个数组,如So::Cudio> App.Auth.ActhCCTx= > LoopUsServices。map(fn= fn.cn:cTx))/<代码>,但是这些函数不会严格地称为膝关节炎中间件,因为最初的想法是创建这些函数的数组,然后在App.Sube中使用这个数组,如::代码> App.Auth.ActhCCTx= > LoopUsServices。map(fn= fn.cn:cx(cx))< /C> >但是这些函数不会严格地称为膝关节炎中间件。
// 1st middleware
app.use(async(a, next) => {
  .
  .
  .

  // Call next middleware and wait for it to complete
  await next()
})

// 2nd middleware
app.use(async(a) => {
  .
  .
})