Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Node.js 是否可以在ExpressJS中禁用/删除特定路由的中间件?_Node.js_Express - Fatal编程技术网

Node.js 是否可以在ExpressJS中禁用/删除特定路由的中间件?

Node.js 是否可以在ExpressJS中禁用/删除特定路由的中间件?,node.js,express,Node.js,Express,我想禁用一个特定的中间件,这是我以前在app.js中设置的,例如: app.use(express.bodyParser()); 然后我想删除特定路由的bodyParser(),例如: app.post("/posts/add", Post.addPost); 谢谢您可以编写一个函数来检测一种情况,如下所示: function maybe(fn) { return function(req, res, next) { if (req.path === '/posts/

我想禁用一个特定的中间件,这是我以前在app.js中设置的,例如:

app.use(express.bodyParser());
然后我想删除特定路由的bodyParser(),例如:

app.post("/posts/add", Post.addPost);

谢谢

您可以编写一个函数来检测一种情况,如下所示:

function maybe(fn) {
    return function(req, res, next) {
        if (req.path === '/posts/add' && req.method === 'POST') {
            next();
        } else {
            fn(req, res, next);
        }
    }
}
然后修改app.use语句:

app.use(maybe(express.bodyParser()));

这也帮了我的忙,我们在app.use中使用了全球通用的定制中装,现在我们希望在某些路线上禁用它。我们想出的解决办法是让中装接受一份路线清单,即不应该采取行动:你救了我一天!