请教Express中变量传递的问题
学艺不精,请教问题,先谢谢了。 希望实现如下功能,exports.b中获取到exports.a中的变量。 路由是这样的:
app.get('/a',Model.a);
app.get('/b',Model.b);
控制器是这样的:
exports.a = function(req,res){
var q = req.query.q;
// ...
res.render('xxx.jade',{})
}
exports.b = function(req,res){
//求指导
//希望在这里获取到exports.a里的q变量
// ...
res.json()
}
如果是普通的js中,实现a()函数中传递变量到b()函数是非常容易的,可以这样做:
function a(){
var q = 'xxx';
this.b(q);
}
function b(q){
// console.log(q) => 'xxx'
}
7 回复
瓜皮来解答一下吧
闭包啊
把q申明到 export外面
@captainblue2013 艹你。。。。
module.exports 就提示到这。
@MiguelValentine 其实是题主没说的很明确啦
你应该将 exports.a = function(req,res){ var q = req.query.q; //return q; } 中的q return,要不然就算给q赋值了也没用,a函数没起什么实质作用
@duoduoyi 我这应用场景比较特殊,在不同路由下获取渲染不同的页面。不能用闭包,将b()包在a()里面。 路由是这样的的
app.get('/a',Model.a);
app.get('/b',Model.b);
控制器是这样的,
exports.a = function(req,res){
var q = req.query.q;
// ...
res.render('xxx.jade',{})
}
exports.b = function(req,res){
//需要exports.a里的变量q
// ...
res.json()
}
@xuyuan923 不理解路由 /a和/b为啥要耦合起来。 难道req.query.q 是一个类似于apiKey的东东?用户只传一次apiKey, 后续的访问要检查这个apiKey? 如果是类似这样的场景,我能想到的是在/a时把这个apiKey放到session的数据库里面,然后/b路由时根据session id从session数据库读取。