多条路由只调用一次中间件

问题描述

我有一个仪表板的 api,它有这样的路由

/dashboardRoutes/getdata1
/dashboardRoutes/getdata2
.
.
.
/dashboardRoutes/getdata7

在后端,我使用 express router.use 将它们转移到处理程序。

router.use('/dashboardRoutes',getHirarchiEmp,dashboardRoutesHandler)
#dashboardRoutesHandler

/getdata1,handler1()
/getdata2,handler2()
.
.
.
/getdata7,handler7()

这个路由器有一个中间件 getHirarchiEmp,它将数据附加到我将在各个处理程序中使用的 req 主体,现在这个中间件在每条路由上都被调用,因为我有 7 条路由,它被调用了 7 次。有什么办法可以只调用中间件一次,并且所有处理程序中的数据也可用

解决方法

不,您不能一次生成两个中间件。 'Express Middleware' 只是链接一堆函数的一种奇特方式。需要注意的一件事是中间件是有序的。

在 Express 中,您可以将中间件设置为“全局”中间件;这意味着它将为每个传入请求调用。

Click to preview image

中间件顺序很重要,当 Express 收到请求时,每个与请求匹配的中间件都按照它初始化的顺序运行,直到出现终止操作(如发送响应) .因此,如果发生错误,所有用于处理错误的中间件将按顺序调用,直到其中一个不调用 next() 函数调用为止。