2017-12-23 16 views
3

Express 4.16.2でapp.useの経路パラメータを使用することはできません。Expressで `app.use`で経路パラメータを使用

私はこのような文を持っている:

app.use('/course-sessions/:courseSessionId/chapter-sessions', chapterSessionsRouter) 

そして、章セッションルータで:私は'/course-sessions/0/chapter-sessions/'を得たとき

// Index. 
router.get('/', ...resource.indexMethods) 

、私は404

を持って次に私がしようとしていますこのようなステートメント:

app.get('/course-sessions/:courseSessionId/chapter-sessions', ...chapterSessionResource.indexMethods) 

今私は私が望む結果があります。したがって、ルートパラメータはapp.useでは機能しません。

私が研究している間、私はthis GitHub issuethis pull requestを得て問題を解決しました。しかし、問題はまだここにあるようです。あるいは私は何か間違っているのですか?

答えて

2

ルータを別の方法でセットアップする必要があります。mergeParamsを使用して、親ルートのパラメータにアクセスしてみてください。

let router = express.Router({ mergeParams: true }); 

は、ドキュメントを参照してください:http://expressjs.com/en/api.html

+0

ありがとう、それは働いた! 'app.use'と' router.use'の両方で動作しました。 – ismailarilik

1

私はapp.use( '/ course-sessions /'、chapterSessionsRouter)だけを行い、ルータ内のIDを処理します。

+0

私は、これが今のところ最も適切な解決策だと思います。しかし、 'app.use'がルートパラメータをサポートしているか、' router.use'がミドルウェアとしてルータをサポートしていると良いでしょう... – ismailarilik

関連する問題