Внутренний Express.js, где хранятся пути монтирования на объекте приложения?

Я сталкиваюсь с очень конкретным случаем использования, когда мне нужно получить доступ к путям монтирования различных субприложений Express при переборе объекта приложения.

Образец кода:

const express = require("express")
const app = express()

app.use("/users", new usersRouter())
app.use("/flowers", new flowersRouter())

// Later in code...
app.get("/something", (req, res, next) => checkAppObject(app, next))

function checkAppObject(app, next) {
    // Where are stored the "/users" and "/flowers" info ?
    console.log(app) 
    next()
}

Я нигде не нашел

1 ответ

Как оказалось, экспресс app объект содержит внутренний _router.stack свойство, которое заполняется коллекцией Layer объекты.

При выполнении app.use('/path', someFunc)Экспресс добавляет Layer объект и если это someFun также маршрутизатор (app сам объект), то layer.handle Объект также будет содержать свой собственный stack свойство (и т. д. рекурсивно).

Следовательно, единственный способ получить доступ к точке монтирования - на этом объекте слоя внутри regexp, Нужно было бы сериализовать регулярное выражение или что-то еще (если это возможно, посмотрите это)

При условии, что путь монтирования "/batchs" значение объекта слоя:

{ /^\/batchs\/?(?=\/|$)/i fast_star: false, fast_slash: false }

на моем компьютере.

Надеюсь это поможет

Другие вопросы по тегам