我需要在我的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
答案 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);
}