我正在尝试将路线的不同部分分成不同的文件
我有一条/houses/
路线和一条/houses/:houseid/bookings
路线
我在routeHouses.js文件中有/ houses /,我想将部分预订路线放在routeBookings.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
为空时,它马上就抓住了
如果我使用
将路线移到routeHousesrouter.get('/:hid/bookings')
它可以工作,但我想将其分开。
答案 0 :(得分:3)
我不相信您可以使用这种快速路由器。预订Routes路由器无权访问其他路由器参数,因为预订Routes只能访问“父”路由器URL之后的任何内容。
如果您确实有需要这样做,可以使用以下示例代码来解决。但是id表示尝试重组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)
})