Javascript 应用程序中缺少参数。使用带有节点的快速路由

Javascript 应用程序中缺少参数。使用带有节点的快速路由,javascript,node.js,express,routes,Javascript,Node.js,Express,Routes,我正在尝试在不同的文件中分离部分路由 我有一条/houses/路线和一条/houses/:houseid/预订路线 我在routehouses.js文件中有/houses/,我想将部分预订路线放在routesBookings.js文件中,但它不起作用,因为我无法获取:houseid参数 params对象为空 我正在和你一起定路线 app.use('/profile/houses/:hid/bookings', bookingRoutes) 在routeBookings.js中 router.g

我正在尝试在不同的文件中分离部分路由

我有一条
/houses/
路线和一条
/houses/:houseid/预订路线

我在routehouses.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
为空时,它会立即命中捕捉

如果我把路线移到有

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

它能工作,但我想把它分开。

我不相信你能像那样使用express路由器。预订路由路由器无法访问其他路由器参数,因为预订路由只能访问“父”路由器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)
})