2012-10-25 17 views
3

我有一箇中間件運行一系列操作,然後我不希望在新請求到達時再使用它。 有沒有辦法讓我的中間件從堆棧中刪除自己?nodejs:中間件應該從堆棧中移除

感謝, 李

+0

我覺得沒有內置的方式做到這一點,你可能要設置一個標誌並在設置標誌時調用next() – pfried

+0

您是否指快遞/連接中間件? –

回答

3

是的,有。試想一下:

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); 

將此視爲象徵性的代碼,我還沒有機會測試它,但概念是存在的......