将param传递给从另一个控制器公开的方法

时间:2016-11-24 12:23:26

标签: javascript node.js express

我想将params传递给控制器​​B中声明的方法,说它是conB.js并且看起来像这样

module.exports.verify = function(req,res,next){
// how to get it here?
}

然后现在我有conA.js,我怎么能把参数传递给它?

我首先知道我必须加入它,

var ConB = require('ConB');

但如何传递param以验证方法如ConB.verify('param')以便我可以在ConA.js中获取它?

2 个答案:

答案 0 :(得分:1)

不确定我是否正在尝试做什么,但是如果要使用参数调用verify,则必须将其定义为接受参数的函数。所以conB.js是:

module.exports.verify = function(param){
   // do something with param
   return something;
}

然后在conA.js:

var conB = require('./conB.js');
var result = conB.verify(your_param);

评论后更新......

您还可以将不同的控制器编写为快速中间件,并使用res.locals传递参数。请参阅:http://expressjs.com/en/guide/using-middleware.html

在这种情况下,您需要在app中使用一个按顺序调用中间件的路径:

app.use("/testUrl", consB.verify, cansA.doSomething);

然后consB.js就像:

module.exports.verify = function(req, res, next){
   // do something with param and store something in res.locals
   res.locals.user = "foo";
   // then remember to call next
   next();
}

ConsA.js

module.exports.doSomething = function(req, res, next) {
    // use locals modified by previous middleware
    res.end("The user of the request is: "+res.locals.user);
}

答案 1 :(得分:0)

file - conB.js

module.exports.verify = function(req,res,next){

}

file - conA.js //这里你想使用来自conB.js的导出对象

所以如果两个文件都在同一个文件夹中你可以做到这一点,否则你必须使用相对路径。

 var conB = require('./conB.js')