如何扩展快速路由器功能?

时间:2016-11-15 00:28:11

标签: node.js sockets express routing

是否可以扩展快速路由器功能?我需要发送soket.io以及响应和请求。

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

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

控制器文件看起来像这样:

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

}
...

所以从第一个文件我需要发送'i'到控制器,我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您可以定义实际的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充当包装器,它返回实际的中间件,因此您可以轻松地将任何参数传递给它。

如果这不是你想要的,请告诉我!