экспресс-способ доступа к параметрам из сегмента uri

#node.js #express

#node.js #выразить

Вопрос:

Моя ссылка такая, я хочу получить доступ к номеру 16 на сервере

 http://website.com/getItem/16
  

мои маршруты getIitem.js вот так

 let router = express.Router()
router.get('/', async (req, res, next) => {
    console.log(req.params) // got empty object
    res.send('good') 
})
module.exports = router

  

мой app.js это похоже на это

 var getItem = require('./routes/getItem')
app.use('/getItem/:id', getItem)
module.exports = app

  

Проблема: когда я консоль.зарегистрируйте reg.params, получил пустой объект

Комментарии:

1. 1) Делали ли вы что const router = express.Router() -нибудь до того, как начали вызывать router.get()? 2) вы действительно использовали свой маршрутизатор, например app.use(router) ? Документы здесь могут помочь в отладке: expressjs.com/en/guide/using-middleware.html#middleware.router

2. эти коды прямо из экспресс-генератора

3. Вы уверены, что на самом деле написали это req в своем коде? Предоставленный вами код не приведет к этой ошибке.

4. @yen router = express.Router() не содержит getItem.js файл

5. Я обновил вопрос

Ответ №1:

Предоставьте mergeParams значение true для вашего router .

 ...
let router = express.Router({ mergeParams: true })
...
  

В соответствии с экспресс-документом:

Параметры слияния: сохраните значения req.params от родительского маршрутизатора. Если родительский и дочерний параметры имеют конфликтующие имена параметров, значение дочернего элемента имеет приоритет.

Значение по умолчанию для этого параметра равно false.