Node API: параметризация в маршрутизации - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь создать API для моего сайта. Однако я как бы борюсь с параметрами маршрута. Сейчас у меня есть два маршрута:

const route1 = require('./routes/route1')
const route2 = require('./routes/route2')
app.use('/route', route1)
app.use('/route/:id/details', route2);

Первый маршрут работает отлично. В рамках первого маршрута я проверяю параметр ID, а также получаю код

Код в маршруте1

router.get('/:id', async (req, res) => {
...
})

Я могу легко проверить идентификатор в качестве параметра в своем запросе.

Я хотел сделать 2-й путь, чтобы я мог вызвать детали одного объекта. Однако это не работает, как ожидалось. Код в route2:

router.get('/', async (req, res) => {
    console.log(req.params);
})

Мои параметры всегда пусты в этом пути. (Я уже проверил, что он может быть вызван)

1 Ответ

0 голосов
/ 20 октября 2019

Где бы вы ни использовали маршрутизатор, добавьте это в начало этого файла:

, то есть в router.js

const router = require('express').Router({mergeParams: true});

обратите внимание на {mergeParams: true}, вам это нужно, так как вывложение ваших маршрутов в другой файл. Если вы оставили все свои маршруты в файле, то есть

app.use('/route/:id/details', (req, res) => {
   console.log(req.params);// works fine
});

, вам не понадобился бы флаг true mergeParams.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...