过滤中间件js

时间:2018-11-16 13:36:25

标签: express model-view-controller middleware

我需要在我的MVC js项目中添加一个中间件过滤器,该过滤器会将控制权转移到控制器,如果过滤器条件为false,则它将执行一些操作,如果条件为true,则将呈现一个特殊页面(但不将控件交给控制器)。它必须是在控制器逻辑之前执行的中间件,并且不应是控制器中的功能。

这里我有一条路由,现在只需在控制器中执行下载方法即可。

if (config.common.zoneName === 'main') {
router.get('/book/:itemid', new 
DownloadController(ResourceRepo).download);
}

我需要在其中添加一些逻辑,例如

if (itemid > 10){
//render some special page
} 
//execute download method on the same controller
}   

在实际任务中,条件复杂(例如获取请求IP并检查具有相同IP的datadase中的字段)。因此,条件不是内联函数,而是一些复杂的方法。 我如何使用expressjs中间件来做到这一点? 非常感谢:3

1 个答案:

答案 0 :(得分:0)

我想你想做这样的事情:

if (config.common.zoneName === 'main') {
  router.get('/book/:itemid', 
    (req, res, next) => {
      if (req.params.itemid > 10){
        //render some special page
      } 
      //execute download method on the same controller
    },
    new DownloadController(ResourceRepo).download);
}