在Express上使用带有"app.use"的路由参数

ism*_*lik 10 express routeparams

我不能app.use在Express 4.16.2上使用路由参数.

我有这样的声明:

app.use('/course-sessions/:courseSessionId/chapter-sessions', chapterSessionsRouter)
Run Code Online (Sandbox Code Playgroud)

并且,在章节会话路由器:

// Index.
router.get('/', ...resource.indexMethods)
Run Code Online (Sandbox Code Playgroud)

当我得到时'/course-sessions/0/chapter-sessions/',我有404.

然后我尝试这样的声明:

app.get('/course-sessions/:courseSessionId/chapter-sessions', ...chapterSessionResource.indexMethods)
Run Code Online (Sandbox Code Playgroud)

现在我得到了我想要的结果.因此路由参数不起作用app.use.

在我研究的过程中,我得到了这个GitHub问题以及这个拉动请求来解决这个问题.但似乎这个问题仍然存在.或者我做错了什么?

Ben*_*dai 18

您必须以不同的方式设置路由器,尝试使用mergeParams父路由中的参数访问.

let router = express.Router({ mergeParams: true });
Run Code Online (Sandbox Code Playgroud)

请参阅docs:http://expressjs.com/en/api.html