Javascript 在express中,是否有一种方法可以将控制器功能普遍应用于路由器文件中的所有路由?
我在一个应用程序中有下面的代码。假设我希望每个“router.get”实例使用“authController.isLoggedIn”。有没有一种方法不需要我在6次不同的时间里打印出来?我在想路由器。可能是它的用途。。。但在做了一些研究之后,我认为这不再是正确的。任何帮助都将不胜感激。多谢各位Javascript 在express中,是否有一种方法可以将控制器功能普遍应用于路由器文件中的所有路由?,javascript,express,Javascript,Express,我在一个应用程序中有下面的代码。假设我希望每个“router.get”实例使用“authController.isLoggedIn”。有没有一种方法不需要我在6次不同的时间里打印出来?我在想路由器。可能是它的用途。。。但在做了一些研究之后,我认为这不再是正确的。任何帮助都将不胜感激。多谢各位 router.get('/tour/:slug', viewsController.getTour); router.get('/login', authController.isLoggedIn, vie
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);
也许是这样的:
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);