假设我有 file1.js:
import Router from "express-promise-router";
export const router1 = Router();
router1.get("/", async (req, res) => {
// I want to get here :id from router2 in file2
})
和 file2.js(为简单起见,在同一目录中):
import Router from "express-promise-router";
import { router1 } from "./file1";
export const router2 = Router();
router2.use("/:id/path", router1);
我想在 file1.js 中使用 file2.js 中的 /:id
(请参阅我在示例代码中的评论)。
我该怎么做?
换句话说,我如何在路由器链中渗透 '/:something'
参数?
注意 - 这不起作用:
router1.get("/", async (req, res) => {
const { params: {id} } = req;
})
最佳答案
我找到了答案。 来自 express api :
因此在声明路由器处理程序时应添加选项 mergeParams
设置为 true
。
一般来说:
const router = express.Router({mergeParams: true});
.
file1.js 中问题的示例代码:
import Router from "express-promise-router";
export const router1 = Router({mergeParams: true});
router1.get("/", async (req, res) => {
const { params: {id} } = req; // now this works
})
关于javascript - 从express js中的先前路由处理程序获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60848477/