Как изменить порядок выполнения Express Middleware? - PullRequest
0 голосов
/ 11 июня 2019

Я создал 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 ("*", validationResult, checkAdmin)

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

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

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

У меня есть какой-либо способ заказать это промежуточное программное обеспечение. Заказ -

Проверка промежуточного программного обеспечения -> validationResult -> checkAdmin

1 Ответ

0 голосов
/ 11 июня 2019

Есть еще один способ сократить синтаксис:

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

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

Подробнее об операторе распространения здесь .

...