javascript - 从express js中的先前路由处理程序获取参数

标签 javascript node.js express

假设我有 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 : enter image description here

因此在声明路由器处理程序时应添加选项 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/

相关文章:

javascript - JavaScript 中的 Razor foreach 循环

mysql - 在 Node js 应用程序中将 <用户名>@<计算机名> 更改为 <用户名>@localhost

javascript - NodeJS Express 要求和启动

node.js - 如何使用 Node 和 Express 建立客户/客户风格的子域

node.js - 测试 NodeJS 应用程序时,我应该将 Capybara.app 设置为什么?

javascript - 使用 jquery 和 regex 的电话号码格式

javascript - 循环遍历表并检查值

node.js - 文档上的 Sequelize 关联解释

node.js - graphql-tag/index 没有导出成员 'gql'

javascript - 识别给定数组是 d3 选择