これがExpressのバグなのか、それとも何か間違ったことをしているだけなのか(おそらく後者)はわかりませんが、req.paramsはリクエストの最終ステップでのみパラメーターを保持していることがわかりました。私が何を意味するかを示すために:
実例:
router.get('/:id/test', function(req, res){
// req.params.id is not undefined
});
機能しません:(
ファイル1:
router.use('/:id', require('./file2'));
ファイル2:
router.get('/test', function(req, res){
// req.params.id is undefined?!
});
さて...上記は私には完全に非論理的であるように思われます。Expressジェネレーターが上記の方法でルートを定義しているので、それでもどこかのパスで定義する必要があります。確かに私はまだ「id」にアクセスできるはずですか?
だから基本的に、私は何かが欠けていますか?これは意図的ですか/文書化されていますか? FWIW Expressv4.12.0を使用しています。
免責事項:ファイルのことはおそらく無関係ですが、後悔するよりも安全である方が良いでしょう。
File 2
でRouter
を作成するときは、親からパラメータを継承するように指示する必要があります。
var router = express.Router({mergeParams: true});