【问题标题】:How to extend express router function?如何扩展快速路由器功能?
【发布时间】:2016-11-15 00:28:10
【问题描述】:

可以扩展快速路由器功能吗?我需要连同响应和请求一起发送 soket.io。

在一个文件中我有路由器:

var contoller = require('controller');
...
module.exports = function(app, io) {
   router.post('/', controller.postAction);
}

控制器文件如下所示:

...
controler.prototype.postAction = function(req, res) {

}
...

所以我需要从第一个文件向控制器发送“io”,我该怎么做?

【问题讨论】:

  • send soket.io along with response and request 是什么意思?你实际上想要完成什么?您始终可以添加中间件,将自定义属性添加到 reqres

标签: node.js sockets express routing


【解决方案1】:

您可以定义实际的postAction 函数,该函数本身返回一个函数并将io 传递给postAction 函数,如下所示:

controler.prototype.postAction = function(io) {  // you receive io as an argument
    return function(req, res){
       // your midleware code here
    }
}

你可以在你的路由器中要求这个:

var contoller = require('controller');
...
module.exports = function(app, io) {
   router.post('/', controller.postAction(io)); // note here we pass io
}

这里发生的是函数 postAction 充当一个包装器,它返回实际的中间件,因此您可以轻松地将任何参数传递给它。

如果这不是您要找的,请告诉我!

【讨论】:

  • 这是一个很好的解决方案,但可以将io 设置为控制器文件中的属性并使用它而不传递给函数?
猜你喜欢
  • 2014-11-19
  • 2018-07-15
  • 2016-07-03
  • 1970-01-01
  • 2017-02-26
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 2016-11-16
相关资源
最近更新 更多