Отсутствует параметр в экспресс-маршруте app.use с помощью nodejs - PullRequest
2 голосов
/ 03 июля 2019

Я пытаюсь разделить части своих маршрутов в разных файлах

У меня есть маршрут /houses/ и маршрут /houses/:houseid/bookings

У меня есть / Houses / в маршрутахHouses.jsфайл, и я хочу поместить часть маршрутов бронирования в файл routBookings.js, но он не работает, так как я не могу получить параметр: houseid.

Объект params пуст

Я устанавливаю маршрут с помощью

app.use('/profile/houses/:hid/bookings', bookingRoutes)

И в routeBookings.js

router.get('/', auth, (req, res) => {

    database('sh_bookings').select('*').where('b_house_id', req.params.hid).then((bookings) => {

        res.render('profile/bookings/bookings.ejs', {
            bookings: bookings,
            moment: moment
        })

    }).catch(() => {    
        res.status(500).send('An error occured')
    })
})

Он просто попадает впоймать сразу же, как req.params.hid пусто

Если я переместу маршрут в routeHouses с

router.get('/:hid/bookings') 

, он работает, но я хочу, чтобы он был отделен.

1 Ответ

3 голосов
/ 03 июля 2019

Я не верю, что вы можете использовать экспресс-маршрутизатор таким образом.Маршрутизатор маршрутизации резервирования не имеет доступа к другим параметрам маршрутизатора, потому что Маршруты резервирования имеют доступ только к чему-либо после URL-адреса «родительского» маршрутизатора.

Если вы действительно чувствуете необходимость сделать это, вот небольшой пример кода, чтобы обойти это.Но, скажем, попробуем реструктурировать ваши API-маршруты, потому что я не уверен, насколько это полезно.

Извините за столь большое количество изменений.Решил, что было бы лучше извлечь эту логику в функцию промежуточного программного обеспечения

const bindHid = (req, res, next) => {
  req.hid = req.params.hid;
  next();
}

app.use('/homes/:hid/bookings', bindHid, bookingRoutes)

bookingRoutes.use('/', (req, res, next) => {
  res.send(req.hid)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...