Ответ 1
Когда вы создаете свой Router
в File 2
, вам нужно сказать ему, чтобы наследовать параметры от родителей.
var router = express.Router({mergeParams: true});
Я не уверен, что это ошибка в 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.
Отказ от ответственности: файл, вероятно, не имеет значения, но лучше быть в безопасности, чем извините.
Когда вы создаете свой Router
в File 2
, вам нужно сказать ему, чтобы наследовать параметры от родителей.
var router = express.Router({mergeParams: true});