有谁知道我可以阅读快递路线内容的方式?例如,假设我有一条路线:
router.post('/test', (req, res) => {
let postBody = {
firstName: {
required: true,
description: "First Name"
},
lastName: {
required: true,
description: "Last Name"
},
email: {
required: true,
description: "Your email"
}
}
res.json({
msg: "Success"
})
})
我的目标是在应用启动时阅读每条路线的postBody
内容。
我的app.js
:
import express from 'express'
const router = express.Router()
const app = express()
app._router.stack.forEach(middleware => {
if (middleware.handle && middleware.handle.stack) {
middleware.handle.stack.forEach(route => {
console.log(route)
})
}
})
app.use(router)
使用上面的代码,我可以打印出所有路线。但是,我希望在应用程序启动时打印出每条路线的postBody
。有人可以帮忙吗?
提前致谢!
答案 0 :(得分:1)
保留postBody变量的地方仅在命中这些路线时执行。要在这些回调之外阅读它们,您应该能够将它们传递到公共模块中。在下面的示例中,我将其称为“postBodies”。每个路由都将其postBody传递给此模块,并作为主app.js文件底部的最后一个条目,我调用readAll()来打印出所有内部存储的postBody值。
const postBodies = require("./postBodies.js")
router.post('/test', (req, res) => {
let postBody = {
firstName: {
required: true,
description: "First Name"
},
lastName: {
required: true,
description: "Last Name"
},
email: {
required: true,
description: "Your email"
}
}
postBodies.update(postBody)
res.json({
msg: "Success"
})
})
postBodies.js
var bodies[]
module.exports.update = function(x){
bodies.push(x)
}
module.exports.readAll = function(){
bodies.forEach(function(x){
console.log(x)
}
}
app.js或index.js
在所有路线呼叫后的最底部。
postBodies.readAll()