2017-12-23 6 views
3

Ich kann Routenparameter mit app.use auf Express 4.16.2 nicht verwenden.Verwenden Sie Routenparameter mit `app.use` auf Express

Ich habe eine Anweisung wie folgt:

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

Und in Kapitel Sitzungen Router:

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

Als ich '/course-sessions/0/chapter-sessions/' bekam, habe ich 404.

Dann versuche ich, ein Anweisung wie folgt:

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

Jetzt habe ich das Ergebnis, das ich will. Daher funktionieren die Routenparameter nicht mit app.use.

Während ich forsche, habe ich this GitHub issue und this pull request, die das Problem schließt. Aber es scheint, dass das Problem immer noch hier ist. Oder mache ich etwas falsch?

Antwort

2

Sie müssen Ihren Router auf eine andere Weise einrichten, versuchen Sie mergeParams zu verwenden, um auf Parameter in den übergeordneten Routen zuzugreifen.

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

Siehe docs: http://expressjs.com/en/api.html

+0

Danke, es hat funktioniert! Es funktionierte mit "app.use" und "router.use". – ismailarilik

1

Ich würde nur app.use ('/ course-sessions /', chapterSessionsRouter) und die ID innerhalb des Routers behandeln.

+0

Ich denke, dies ist die am besten geeignete Lösung für jetzt ist. Aber es wäre gut, wenn 'app.use' Routenparameter unterstützt, oder' router.use' unterstützt einen Router als Middleware ... – ismailarilik

Verwandte Themen