Express next () запускает следующий маршрут, который параметризуется после вызова next () из текущего маршрута - PullRequest
0 голосов
/ 16 июня 2020

У меня есть этот маршрут, /test который я вызвал, но каким-то образом он запускает /:async маршрут, когда next () вызывается в /test маршруте, наконец?

router.post('/test/:value?'async (req, res: express.Response, next: express.NextFunction) => {|
   try{
     //code
   }catch(err){
     //log error
   }finally{
     next();
   }
})

router.post('/:id?'async (req, res: express.Response, next: express.NextFunction) => {
   try{
     //code
   }catch(err){
     //log error
   }finally{
     next();
   }
})

У меня есть это finalResponseHandler промежуточное ПО в файле server.ts, которое должно вызываться в next ().

app.use(finalResponseHandler);

Если я удалю /:id? маршрут, finalResponseHandler промежуточное ПО вызывается идеально.
Почему это /: id route вызывается вместо промежуточного программного обеспечения finalResponseHandler?
Как мне исправить это, чтобы не вызывать /:id route при вызове маршрута '/ test'.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 16 июня 2020

Думаю, причина в том, что express рассматривает это как функцию промежуточного программного обеспечения с путем /test/:value?. и то же самое для второго маршрута, я предлагаю вам удалить next() из /test/....

...