Node.js 快速路由传递变量到所需文件
我试图在一个名为index的文件中调用我的所有控制器,所以我不只是在一个文件中构建所有express routes 因此,我的index.js看起来像:Node.js 快速路由传递变量到所需文件,node.js,rest,express,routing,request,Node.js,Rest,Express,Routing,Request,我试图在一个名为index的文件中调用我的所有控制器,所以我不只是在一个文件中构建所有express routes 因此,我的index.js看起来像: //imports and stuff router.use('/auth', require('./auth')) router.use('/users', require('./users')) router.use('/:world_id/villages', require('./villages')) //export router
//imports and stuff
router.use('/auth', require('./auth'))
router.use('/users', require('./users'))
router.use('/:world_id/villages', require('./villages'))
//export router
然后我有auth.js和users.js文件
auth.js:
router.route('/register')
.post(function(req, res) {
//register the user
})
users.js:
router.route('/:user_id')
//GET user profile
.get(function(req, res){
// Use the req.params.userId to get the user by Id
})
这两种方法都适用。访问/api/auth/register
或/api/users/:user_id
可按预期工作
但是,当尝试转到/api/{world_id}/villages
时,这不会像预期的那样进行,因为world_id
参数没有传递到处理它的文件,即villages.js
villages.js:
router.route('/')
//GET all villages of the current world (world_id)
.get(function(req, res){
// Use the req.params.world_id to get it... but this is undefined :(
})
如何拥有此文件结构,使我的控制器不会变得混乱,同时,将此参数传递给控制器文件,以便即使路由为(“/”),它也可以使用它?使子路由器内的任何参数可见的唯一方法是在那里定义它。 在你的例子中
router.route('/:world_id/villages/')
//GET all villages of the current world (world_id)
.get(function(req, res){
// req.params.world_id is set
})
// ...
app.use('/', router);
路线
/:world\u id/村庄是否不适合您的需要?但是如果你想传递一个变量,你应该用一个函数包装你的内容,并用参数调用它:app.use(require('./some_dinamyc_routes')('world_id_1')代码>但这是一个糟糕的做法。@Maikal这条路线正好合适。但是参数:world_id
没有传递到处理返回村庄逻辑的my villages.js文件。抱歉,完全不理解您的问题。。这是有意的行为。子路由器无法看到父路由器的参数。。还包括: