Express JS Routing redirection - PullRequest
       10

Express JS Routing redirection

0 голосов
/ 23 декабря 2019

Прости меня, так как я очень новичок в Node JS / Express JS

У меня есть следующий фрагмент кода:

router.get('/:locationId', async (req, res) => {
  console.log('[GET by _id] /locations/')
  try{
    const location = await Location.findById(req.params.locationId);
    res.json(location);
  }catch(err){
    res.json({message:err, status:500});
  }
});


router.get('/location_id/', async (req, res) => {
  console.log('[GET by location_id] /locations/location_id')
});

Каждый раз, когда я звоню localhost: 3000 / location_id /,он вызывает первую функцию с параметром location_id в качестве параметра.

Я что-то упустил?

1 Ответ

3 голосов
/ 23 декабря 2019

Экспресс-маршруты и промежуточное ПО представляют собой список / массив / стек / очередь функций, обрабатываемых последовательно. Express никогда не переставляет последовательность маршрутов и промежуточного программного обеспечения.

У вас есть два маршрута:

get('/:some_variable')
get('/location_id/')

Первый маршрут всегда будет соответствовать всему, потому что /location_id также является допустимой строкой, которую можно назначитьк переменной пути первого маршрута.

Вы можете заставить маршруты работать, переставив, какой маршрут обрабатывается первым:

get('/location_id/')
get('/:some_variable')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...