我正在尝试将路线的各个部分分离到不同的文件中
我有一个 /houses/
路线和一个 /houses/:houseid/bookings
路线
我在routesHouses.js 文件中有/houses/,我想将部分预订路线放入routesBookings.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
为空,它立即就捕获了
如果我将路线移动到routesHouses中
router.get('/:hid/bookings')
它可以工作,但我想把它分开。
最佳答案
我不相信你可以这样使用快速路由器。预订路由路由器无权访问其他路由器参数,因为预订路由只能访问“父”路由器 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)
})
关于javascript - app.use Express 路由中缺少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56871080/