2015-12-21 113 views
0

在我的小聊天應用程序中,當我對以「用戶」結尾的端點進行HTTP調用時,我希望我的房間路由器接管。這與前面的房間名稱一致,或者完全沒有。Express.js - 我怎樣才能從主路由器傳遞一個URL參數到另一個路由器模塊?

routes.js:

module.exports = function(app) { 
    var roomRoute = require('./routes/room'); 
    app.use('/:roomname/users', roomRoute); 
    app.use('/users', roomRoute); 
}; 

現在,當我的房間路由器接管,我希望能夠,如果它在url中存在進入房間名稱。喜歡的東西:

./routes/room.js:

var express = require('express'); 
var router = express.Router(); 

router.get('/info', function(req, res) { 
    console.log('the roomname is ' + req.roomname); 
    res.end(); 
}); 

module.exports = router; 

有什麼辦法可以輕鬆地一起傳遞這個房間的名字嗎?我大概可以從提取的baseUrl,但我認爲有可能是一個更好的辦法...

+0

'req.params.roomname'不起作用? –

+0

否 - 請求傳遞到房間路由器 – millarnui

+0

後,參數爲空,您甚至可以將其設置在'res.locals' –

回答

0

非常接下來的事情後,我貼有答案,我讀...

在routes.js:

var roomRoute = require('./routes/room'); 
app.use('/:roomname/users', function (req, res, next) { 
    req.roomname = req.params.roomname; 
    next(); 
}, roomRoute); 
app.use('/users', roomRoute);