我不能在Express 4.16.2上使用app.use
的路由参数。
我有这样的陈述:
app.use('/course-sessions/:courseSessionId/chapter-sessions', chapterSessionsRouter)
并且,在章节会话路由器:
// Index.
router.get('/', ...resource.indexMethods)
当我得到'/course-sessions/0/chapter-sessions/'
时,我有404。
然后我正在尝试这样的声明:
app.get('/course-sessions/:courseSessionId/chapter-sessions', ...chapterSessionResource.indexMethods)
现在我得到了我想要的结果。因此,路由参数不适用于app.use
。
在我研究期间,我得到了this GitHub issue和this pull request,这就解决了这个问题。但似乎这个问题仍然存在。或者我做错了什么?
答案 0 :(得分:9)
您必须以不同的方式设置路由器,尝试使用mergeParams
访问父路由中的参数。
let router = express.Router({ mergeParams: true });
答案 1 :(得分:1)
我只做app.use(' / course-sessions /',chapterSessionsRouter)并处理路由器内的id。