Sails js:服务变量初始化

时间:2015-03-09 18:30:22

标签: node.js sails.js

以下代码仅供参考。假设我的服务名称为incremented,并且它具有incrementCounter函数

var counter = 0;
module.exports = {
    incrementCounter: function (req, callback) {
        counter++;
        callback(null, counter);
    }   
}

如您所见,var counter = 0在函数外部定义,因此可在所有服务函数内全局访问。现在,如果我并行调用两次服务,它会为第一次调用提供1,但是对于第二次调用,它会给我2。当调用服务时,变量counter是否应该使用0重新初始化自己?

incremented.incrementCounter(req, function(error, response){
 //response = 1
});

incremented.incrementCounter(req, function(error, response){
 //response = 2
});

2 个答案:

答案 0 :(得分:2)

Sails仅初始化服务一次:当您解除应用程序时。可以很容易地证明在服务开始时添加console.log('service inits')或类似内容,并确保它只执行一次。

答案 1 :(得分:1)

  

当调用服务时,变量计数器是否应该重新初始化为0?

没有。节点中的require()缓存模块,因此后续要求实际上并不是一遍又一遍地加载文件。这很容易测试,只需在服务顶部添加console.log('hi')即可。

你真的不应该像这个那样定义全局变量,所以这更像是一般的node.js编程问题,并不是真正的sails.js相关。