インデックスと呼ばれるファイル内ですべてのコントローラを呼び出そうとしているので、すべてのエクスプレスルートを1つのファイルに作成するだけではありません。それから私はauth.jsとusers.jsファイルを持っているExpressルーティングが必要なファイルに変数を渡す
//imports and stuff
router.use('/auth', require('./auth'))
router.use('/users', require('./users'))
router.use('/:world_id/villages', require('./villages'))
//export router
:
したがって、私のindex.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
})
そして、これは、これらの2の両方に適しています。 /api/auth/register
または/api/users/:user_id
にアクセスすると、期待どおりに動作します。
しかし、予想通りworld_id
パラメータが
villages.js villages.jsでそれを処理し、ファイルに渡されませんので、これは行かない/api/{world_id}/villages
のために行くしようとしている:
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 :(
})
私のコントローラが乱雑にならないように、またこのパラメータをコントローラファイルに渡して、ルートが( '/')でも使用できるようにするにはどうすればよいですか?
you'rの例では、ルート '/ん:world_id/villages'はyou'rのニーズに合っていないのですか? しかし、変数を渡したい場合は、あなたのコンテンツを関数でラップし、パラメータ: 'app.use(require( './ some_dinamyc_routes')( 'world_id_1'));'でもそれは悪い – Maikal
@Maikalルートはちょうどいいです。しかし、引数: 'world_id'は、村を返すロジックを扱う私のvillages.jsファイルに渡されません。 –
申し訳ありませんが、あなたの問題を完全に理解していません.. – Maikal