当前位置: 首页 > 面试题库 >

在NodeJS Express中删除路由映射

米元凯
2023-03-14
问题内容

我有一条路线映射为:

app.get('/health/*', function(req, res){
    res.send('1');
});

如何在运行时删除/重新映射此路由到空处理程序?


问题答案:

这将删除app.use中间件和/或app.VERB(获取/发布)路由。在express@4.9.5上测试

var routes = app._router.stack;
routes.forEach(removeMiddlewares);
function removeMiddlewares(route, i, routes) {
    switch (route.handle.name) {
        case 'yourMiddlewareFunctionName':
        case 'yourRouteFunctionName':
            routes.splice(i, 1);
    }
    if (route.route)
        route.route.stack.forEach(removeMiddlewares);
}

请注意,它 要求 中间件/路由功能具有 名称

app.use(function yourMiddlewareFunctionName(req, res, next) {
    ...          ^ named function
});

如果该函数是匿名的, 它将不起作用

app.get('/path', function(req, res, next) {
    ...          ^ anonymous function, won't work                    
});


 类似资料:
  • 假设我的下一个XML来自Oracle队列到驼峰路径: 我想在我的路线中处理这个交换主体,并删除一些元素,例如,然后继续处理主体: 最简单的方法是什么?当然,可以通过声明一些bean或Camel处理器来完成,该处理器将主体作为XML封送/解封送并返回。 但是我想知道骆驼是否有另一种方法?

  • 我希望有一个图像控制器,并允许单endpoint,例如: /图像/上载 这是我目前的做法,但这是正确的做法吗?是否存在某种:none关键字来禁用默认路由?或者我不应该使用资源,用其他的方法去做?

  • 我有一个<code>map</code>,它要么更改值,要么将其设置为nil。然后我想从列表中删除nil条目。该列表不需要保存。 这是我目前拥有的: 我知道我可以做一个循环,并有条件地在另一个数组中收集,如下所示: 但这似乎不是那么惯用。有没有一种很好的方法可以在列表上映射函数,随时删除/排除 nils?

  • 如何在不删除索引映射的情况下从elasticsearch数据库中删除数据? 我是Tire gem,使用删除命令删除我所有的映射并再次运行创建命令。我想避免创建命令一次又一次地运行。 请帮我解决这个问题。