簡體   English   中英

從express js中的先前路由處理程序獲取參數

[英]Get parameter from previous route handler in express js

說我有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

})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM