Экспресс-маршрутизатор undefined params с router.use при разбиении файлов

Я не уверен, что это ошибка в 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 Я использую Express v4.12.0.

Отказ от ответственности: файл, вероятно, не имеет значения, но лучше быть в безопасности, чем извините.

Ответы

Ответ 1

Когда вы создаете свой Router в File 2, вам нужно сказать ему, чтобы наследовать параметры от родителей.

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

http://expressjs.com/api.html#router