如何从路由器获取之前的URL参数

Kon*_*kov 3 parameters node.js express

假设我有以下结构:

http://localhost:4000/projects/:project_id/context_items/:ci_id

我为项目和 context_items 有单独的路由器,但问题是当我在 context_items 路由上时,我需要访问 project_id 参数,但它不存在于 req.param 中。

当我设置路线时,我会执行以下操作:

module.exports = (app)=>{
    app.param('project_id', (req, res, next, project_id)=>{
    console.error(project_id);
    next();
});

app.param('ci_id', (req, res, next, ci_id)=>{
    console.error(ci_id);
    next();
});

//Routes setting....

const projectsRouter = require("./client/projects");
app.use("/projects", projectsRouter)

const contextItemsRouter = require("./client/context_items");
app.use("/projects/:project_id/context_items", contextItemsRouter);

....
Run Code Online (Sandbox Code Playgroud)

project_id 触发但 ci_id 未命中....我可以编写一个函数并从基本 url 中提取project_id,但是访问project_id 的正确方法是什么?

小智 5

查看https://expressjs.com/en/4x/api.html#express.router

简而言之:

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