Express JS路由重定向

时间:2019-12-23 04:51:23

标签: node.js express

请原谅我,因为我是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 个答案:

答案 0 :(得分:3)

快速路由和中间件是按顺序处理的函数的列表/数组/堆栈/队列。 Express不会重新安排路由和中间件的顺序。

您有两条路线:

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

第一条路线将始终匹配所有内容,因为/location_id也是可以分配给第一条路线的路径变量的有效字符串。

您可以通过重新安排首先处理的路线来使路线有效:

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