【问题标题】:nodejs: middleware should remove itself from the stacknodejs:中间件应该从堆栈中删除自己
【发布时间】:2012-10-25 09:50:09
【问题描述】:

我有一个中间件,它运行一系列操作一次,然后当新请求到达时我不想再使用它。 有没有办法让我的中间件从堆栈中删除自己?

谢谢, 李

【问题讨论】:

  • 我认为没有内置方法可以做到这一点,如果设置了标志,您可能需要设置一个标志并调用 next()
  • 你指的是 express/connect 中间件吗?

标签: node.js middleware


【解决方案1】:

是的,有。考虑一下:

var app = require('express')();
function myHandler(req, res, next) {
  //do something usefull

  //locate this handler
  var handlerIndex = -1;
  for(var i =0; i < app.stack.length; i++) {
    if (app.stack[i].handle === myHandler) {
      handlerIndex = i;
    }
  }
 if (handlerIndex > -1) {
    app.stack.splice(handlerIndex, 1);
 }
 next();
});

app.use("/api", myHandler);

将此视为符号代码,我没有机会测试它,但概念就在那里......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2013-09-07
    • 2013-08-11
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多