Используйте параметры маршрута с `app.use` на Express

Я не могу использовать параметры маршрута с app.use на экспресс 4.16.2.

У меня есть такое утверждение:

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

А в главе сеансы роутера:

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

Когда я получил '/course-sessions/0/chapter-sessions/'У меня 404.

Тогда я пытаюсь сделать такое утверждение:

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

Теперь у меня есть результат, который я хочу. Таким образом, параметры маршрута не работают с app.use,

Во время исследования я получил эту проблему GitHub и этот запрос на удаление, который закрывает проблему. Но похоже, что проблема все еще здесь. Или я что-то не так делаю?

2 ответа

Решение

Вы должны настроить свой маршрутизатор по-другому, попробуйте использовать mergeParams для доступа к параметрам в родительских маршрутах.

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

Смотрите документы: http://expressjs.com/en/api.html

Я сделал бы только app.use('/course-session /', chapterSessionsRouter) и обработал идентификатор внутри маршрутизатора.

Другие вопросы по тегам