#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.router2. эти коды прямо из экспресс-генератора
3. Вы уверены, что на самом деле написали это
req
в своем коде? Предоставленный вами код не приведет к этой ошибке.4. @yen
router = express.Router()
не содержит getItem.js файл5. Я обновил вопрос
Ответ №1:
Предоставьте mergeParams
значение true для вашего router
.
...
let router = express.Router({ mergeParams: true })
...
В соответствии с экспресс-документом:
Параметры слияния: сохраните значения req.params от родительского маршрутизатора. Если родительский и дочерний параметры имеют конфликтующие имена параметров, значение дочернего элемента имеет приоритет.
Значение по умолчанию для этого параметра равно false.