如何使用javascript express节点将一个变量从controller.js中的一个方法暴露给另一个controller.js

时间:2016-04-23 00:33:46

标签: javascript node.js express mean-stack meanjs

我有一个Mongo,Express,Angular,Node应用程序。我试图将一个变量作为1个文件中的方法的响应传递给不同文件中的不同方法。

因此,在一系列用户操作期间,它会触发exports.test文件中的方法test.controller.js

看起来像这样:

exports.test = function(req, res) {

        var query = 'crazy query'
        var params = { key:value }
        var cb = function(err,stuff) {
            });
            res.json(stuff);
        var testOutput = res.json(stuff);
        return testOutput;  
    }
        sendToServer(query,params,cb);
}

注意我如何将testOutput设置为等于来自服务器的响应。我从方法中返回了testOutput。

现在我很好奇,我有另一个控制器actions.controller.js。在这个文件里面我有一个名为exports.actions的方法 看起来像这样:

exports.actions = function(req, res, testOutput) {
        console.log(testOutput);

        var query = 'crazy query'
        var params = { key:value }
        var cb = function(err,stuff) {
            });
            res.json(stuff);
    }
        sendToServer(query,params,cb);
}

我试图将test testOutput从test.controller.js暴露给actions.controller.js,因此我可以将testOutput作为参数传递给exports.actions方法。这可能吗?

1 个答案:

答案 0 :(得分:0)

您不能将任何变量直接暴露给其他控制器。控制器之间的通信可以通过服务进行

定义要更新的服务并保存testOutput的值:

angular.module('myApp',[])
.factory('myService',function(){
var init = {};
init.update = function(newVal) {
init.testOutput = newVal;
};
return init;
}]);

您的控制人员:

angular.module('myApp')
.controller('Ctrl1',['myService',function(myService){
exports.test = function(req, res) {

    var query = 'crazy query'
    var params = { key:value }
    var cb = function(err,stuff) {
        });
        res.json(stuff);
    var testOutput = res.json(stuff);
    myService.update(testOutput);  
}
    sendToServer(query,params,cb);
}
}]);

angular.module('myApp')
.controller('Ctrl2',['myService',function(myService){
exports.actions = function(req, res) {
    console.log(mapService.testOutput); //use the variable as u like

    var query = 'crazy query'
    var params = { key:value }
    var cb = function(err,stuff) {
        });
        res.json(stuff);
}
    sendToServer(query,params,cb);
}
}]);