Node.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

我试图在一个名为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
然后我有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文件。抱歉,完全不理解您的问题。。这是有意的行为。子路由器无法看到父路由器的参数。。还包括: