0

我面临一个非常具体的用例,在迭代应用程序对象时,我需要访问各种快速子应用程序的挂载路径。

示例代码:

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()
}

我在任何地方都没有找到

4

1 回答 1

1

事实证明,express对象包含一个由对象集合填充app的内部属性。_router.stackLayer

执行时app.use('/path', someFunc),express 添加一个Layer对象,如果这someFun也是一个路由器(一个app对象本身),那么该layer.handle对象也将包含它自己的stack属性(以此类推)。

因此,访问挂载点的唯一方法是在这个层对象上,在regexp. 一个人将不得不序列化一个正则表达式或其他东西(如果这甚至可能,请参阅这个

如果挂载路径是"/batchs"图层对象上的值,则为:

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

在我的电脑上。

希望这可以帮助

于 2018-03-07T14:49:35.783 回答