Получить параметр из предыдущего обработчика маршрута в express js - PullRequest
3 голосов
/ 25 марта 2020

Скажите, у меня есть 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);

Я хочу использовать /:id из file2. js в file1. js (см. Мой комментарий в примере кода).

Как я могу это сделать? Другими словами, как я могу предоставить параметр '/:something' по цепочке маршрутизаторов?

Примечание. Это не работает:

router1.get("/", async (req, res) => {

      const { params: {id} } = req;

})

1 Ответ

2 голосов
/ 25 марта 2020

Я нашел ответ. С 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

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...