#javascript #express
#javascript #экспресс
Вопрос:
У меня есть приведенный ниже код в приложении. Допустим, я хотел, чтобы каждый экземпляр «router.get» использовал «AuthController.isLoggedIn». Есть ли способ сделать это, который не потребовал бы от меня вводить его 6 раз? Я думал, что router.use может быть… но после некоторых исследований я больше не думаю, что это правильно. Любая помощь будет оценена. Спасибо.
router.get('/tour/:slug', viewsController.getTour);
router.get('/login', authController.isLoggedIn, viewsController.getLoginForm);
router.get('/signup', authController.isLoggedIn, viewsController.getSignupForm);
router.get('/me', authController.protect, viewsController.getAccount);
router.get('/my-tours', authController.protect, viewsController.getMyTours);
router.get('/create', authController.protect, viewsController.createTour);
Ответ №1:
Может быть, что-то вроде этого:
const authRouter = (path, param, ...controllers) =>
router.get(path, authController[param], ...controllers);
router.get('/tour/:slug', viewsController.getTour);
authRouter('/login', 'isLoggedIn', viewsController.getLoginForm);
authRouter('/signup', 'isLoggedIn', viewsController.getSignupForm);
authRouter('/me', 'protect', viewsController.getAccount);
authRouter('/my-tours', 'protect', viewsController.getMyTours);
authRouter('/create', 'protect', viewsController.createTour);