在Express

时间:2017-12-23 07:42:32

标签: express routeparams

我不能在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 issuethis pull request,这就解决了这个问题。但似乎这个问题仍然存在。或者我做错了什么?

2 个答案:

答案 0 :(得分:9)

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

let router = express.Router({ mergeParams: true });

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

答案 1 :(得分:1)

我只做app.use(' / course-sessions /',chapterSessionsRouter)并处理路由器内的id。