gpt4 book ai didi

node.js - 快速路由将变量传递到所需文件

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:58 26 4
gpt4 key购买 nike

我试图在一个名为index的文件中调用所有 Controller ,因此我不只是在一个文件中构建所有快速路由。

因此我的 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
})

用户.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 :(
})

我怎样才能拥有这个文件结构,这样我的 Controller 就不会变得困惑,同时,将此参数传递给 Controller ​​文件,以便即使路由是('/')它也可以使用它?

最佳答案

使任何参数在子路由器内可见的唯一方法是在那里定义它。所以在你的例子中

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

关于node.js - 快速路由将变量传递到所需文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42934981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com