2015-02-06 67 views
3

我是新的节点,我试图添加和删除Express 4中的“即时”路线。我使用app.use(路径,路线)添加它们,我可以在app._router.stack Array中找到它们,但我无法删除特定的路由器。可能吗?我试过用app._router.stack.splice(myRouterIndex,1),但没有成功。Express 4从应用程序栈动态删除中间件

这是我的例子:

for (var i = 0; i < app._router.stack.length; i++) { 
     if(app._router.stack[i].name=='router') { 
      console.log(app._router.stack[i].name);  
      app._router.stack.splice[i,1]; 
      console.log(app._router.stack);   
      break; 
     } 
     } 

第二的console.log(app._router.stack)打印完全相同的第一个。

+0

'splice'是一种方法,'splice(i,1)'。尽管你在例子之上正确使用它,我会假设一个错字? – 2015-02-06 14:40:10

+1

[在NodeJS Express中删除路由映射]的可能重复(http://stackoverflow.com/questions/10378690/remove-route-mappings-in-nodejs-express) – James 2015-02-06 14:43:52

回答

3

这是一个简单的错误,因为我是Node中的新手。感谢Ben Fortune!

正确的语法是app._router.stack.splice(i,1); 由于拼接是一种方法。用括号[]做它不会引发任何错误,但不会按预期工作。

相关问题