我面对一个非常具体的用例,我需要在迭代app对象时访问各种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()
}
我在任何地方都找不到
答案 0 :(得分:1)
事实证明,express app
对象包含一个内部_router.stack
属性,该属性由一组Layer
个对象填充。
执行app.use('/path', someFunc)
时,express会添加Layer
个对象,如果此someFun
也是路由器(app
个对象本身),那么layer.handle
对象还将包含自己的stack
属性(以递归方式等)。
因此,访问安装点的唯一方法是在regexp
内的此图层对象上。人们必须序列化正则表达式或其他东西(如果可能的话,请参阅this)
如果挂载路径为"/batchs"
,则图层对象上的值为:
{ /^\/batchs\/?(?=\/|$)/i fast_star: false, fast_slash: false }
在我的电脑上。
希望这有帮助