将参数传递给从另一个控制器公开的方法
Posted
技术标签:
【中文标题】将参数传递给从另一个控制器公开的方法【英文标题】:passing param to a method exposed from another controller 【发布时间】:2017-04-08 18:06:28 【问题描述】:我想将参数传递给控制器 B 中声明的方法,说它是 conB.js,看起来像这样
module.exports.verify = function(req,res,next)
// how to get it here?
那么现在我有了 conA.js,我该如何向它传递参数?
我知道首先我必须包含它,
var ConB = require('ConB');
但是如何传递参数来验证 ConB.verify('param') 这样的方法,以便我可以在 ConA.js 中得到它?
【问题讨论】:
你能解释一下你真正想要做什么吗? @DhavalChaudhary 我想将参数从控制器传递到控制器。更新了我的答案。 【参考方案1】:不确定我不明白您要做什么,但是如果您想使用参数调用验证,则必须将其定义为接受参数的函数。所以 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.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);
【讨论】:
如果我将多个参数放入验证中,我的 req,res,next 会在哪里? 你需要他们在里面验证吗?我会更新我的答案,但如果不了解您在验证时要尝试做什么,这很困难。【参考方案2】:文件 - conB.js
module.exports.verify = function(req,res,next)
文件 - conA.js //这里你想使用从 conB.js 导出的对象
如果两个文件都在同一个文件夹中,你可以这样做,否则你必须使用相对路径。
var conB = require('./conB.js')
【讨论】:
我知道如何进行导入和导出,我的问题是如何传递参数。 导出对象,如 conB = someName : function(req,res,next) ;另一方面尝试 conB.someName(yourParameters)。我希望这会有所帮助。以上是关于将参数传递给从另一个控制器公开的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何将数组的值作为第二个参数传递给 awk 的 split 函数?