如何解决为什么 Node.js Express 通过中间路由器传递不同的变量,但总是通过不同的 URL 得出相同的结果
我计划访问以下两个 URL,并尝试使用 一个日志控制器通过日志路由器
处理 2 个 URL >- /buy/:id/log
- /sale/:id/log
以前,日志控制器与“buy”和“sell”路由器文件相关联,并且工作正常。 添加日志路由器文件作为中间件后,无论使用哪个URL,结果始终显示相同的结果。
不知道是Express错误,还是JS错误
代码概念:
- route('/buy') 或 route('/sell')
- route('/:id/log') 并传入 BuyModel / SellModel
- 处理请求
简化代码:
在 index.js 中
app.use('/buy',require('/routes/buy.js'))
app.use('/sell',require('/routes/sell.js'))
在“buy.js”路由器文件中:
router.use('/:id/log',require('./log.js')(BuyModel))
在'sell.js'路由器文件中:
router.use('/:id/log',require('./log.js')(SellModel))
在“log.js”路由器文件中:
module.exports = function(model){
router.route('/')
.get(fetchLogs(model))
return router
}
在“日志”控制器文件中
exports.fetchLogs = model => (req,res) => {
console.log (model)
}
但结果总是显示 BuyModel
怀疑是不是因为buy.js和sell.js是预加载的,模型参数被替换了。
解决方法
通过从buy.js和sell.js路由器文件传入路由器解决
router.use('/:id/log',require('./log.js')(express.Router(),BuyModel))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。