【问题标题】:Express.js internal, where are stored the mount paths on the app object?Express.js 内部,app 对象的挂载路径存储在哪里?
【发布时间】:2018-08-15 14:41:05
【问题描述】:

我面临一个非常具体的用例,我需要在迭代应用对象时访问各种 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()
}

没找到

【问题讨论】:

    标签: javascript node.js express express-router


    【解决方案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 }

    在我的电脑上。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2021-03-17
      • 2012-02-24
      • 1970-01-01
      • 2012-05-11
      • 2014-11-12
      相关资源
      最近更新 更多