2016-02-05 27 views
4

我抓住它傳遞着使用前的所有流量的下一個路由的路徑:如何獲得一個Express應用程序

app.all('*', function(req, res, next) { 
    ... run before stuff, related to the next req.route.path 
    next(); 
}); 

,我想調用next()函數之前運行一些代碼。 爲了讓我知道我需要運行的正確代碼,我必須確定什麼是下一個請求路由路徑。

調試當前REQ對象(內部的所有(「*」,..)不提供有關下一request.route.path

我怎樣才能調用它之前獲得下一個方法route.path任何信息?

您的幫助將不勝感激謝謝

+0

下一條路線就是下一條匹配路線。首先測試較高的路線,最後測試較低的路線。 –

+0

好吧,所以下一個不是我需要的正確的單詞,我怎麼能知道目標路徑路徑,原始路徑,裏面沒有參數,我的意思是/ user /:user_id/user_attr:user_attr? –

回答

4

而不是試圖展望未來,爲什麼不明確地爲需要它的路由設置中間件?

var middleware = function (req, res, next) { 
    ..run your code in here 
}; 

app.get('/users:user_id', middleware, function(req, res, next) { 

}); 
+0

謝謝你的解決方案,我會嘗試這種方法:) –

2

你可以得到通過檢查路由的下路時,在中間件響應打響了finish事件:。

app.all('*', function(req, res, next) { 
    res.on('finish', function() { 
    console.log('Next route: ', req.route.path); 
    }); 
    next(); 
}); 

對於這樣定義的路由:

app.get('/users/:user_id', function(req, res) { 
    res.send('Hello'); 
}); 

你會得到日誌:

$下一步路線: '/用戶/:USER_ID'

+1

嘿偉大的解決方案,我學到了東西,事情是我想運行一種過濾器/之前的具體條目,這將是偉大的執行「後」過濾器謝謝 –

相關問題