如何更改快速中间件的执行顺序?

时间:2019-06-11 11:01:59

标签: javascript node.js api express middleware

我创建了2个api-/ api1,/ api2和4​​个中间件-validate1,validate 2,validationResult,checkAdmin。我的路线太长了,我想保持它们整洁。

router.post('/api1', validate1, validationResult, checkAdmin, user.updateUserData);

router.post('/api2', validate2, validationResult, checkAdmin, user.CreateUser);

因此,我尝试了router.all()方法,并将所有常见的中间件放入该方法中。但是中间件没有按我想要的顺序运行。

router.all(“ *”,validateResult,checkAdmin)

//common middleware
router.all("*", validationResult, checkAdmin);

//routes
router.post('/api1', validate1, user.updateUserData);

router.post('/api2', validate2, user.updateUserData);

我可以通过任何方式订购这些中间件。订单-

验证中间件->验证结果-> checkAdmin

1 个答案:

答案 0 :(得分:0)

还有另一种缩短语法的方法:

const adminChain = (validateX, userValidate) => [validateX, validationResult, checkAdmin, userValidate];

router.post('/api1', ...adminChain(validate1, user.updateUserData));
router.post('/api2', ...adminChain(validate2,  user.CreateUser));

有关传播操作符here的更多信息。