Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在express中,是否有一种方法可以将控制器功能普遍应用于路由器文件中的所有路由?_Javascript_Express - Fatal编程技术网

Javascript 在express中,是否有一种方法可以将控制器功能普遍应用于路由器文件中的所有路由?

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”实例使用“authController.isLoggedIn”。有没有一种方法不需要我在6次不同的时间里打印出来?我在想路由器。可能是它的用途。。。但在做了一些研究之后,我认为这不再是正确的。任何帮助都将不胜感激。多谢各位

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);