2014-09-30 19 views
0
var docs = []; 

server.on('add', function(item){ 
    docs.push(item); 
}); 

setInterval(function(){ 
    save(docs); 
}, 3000); 

var save = function(array) { 
    var items = array.slice(0); // copy array 
    array.length = 0; // clear array 

    mongodb.insert(items, function(){ 
     // ... 
    }); 
}; 

我想将文档保存到RAM中,然后保存到mongodb中。这段代码安全吗?node.js异步数组的安全

Mongodb服务器在欧盟,应用服务器在美国。每秒增加2-3k物品到基地。我想减少连接数量。我的问题:在保存到基地的过程中,变量可能会被修改(在'添加'中)

+0

安全吗?顺便说一句,为什么你不直接插入它们? – Bergi 2014-09-30 09:01:39

回答

-1

这取决于天气mongodb.insert(docs);一次执行所有元素的操作。如果它在每个插入元素之后触发回调,那么你的代码是不安全的(因为你的数组在第一个插入元素后被清除)。

如果对所有元素的操作是同步的,那么你的代码应该是安全的。

+0

我修改了我的代码。这很好? – Sannin 2014-09-30 11:49:30

+0

否。该数组从未被清除*,它被替换为一个空数组。 – Bergi 2014-09-30 11:58:34

+0

@Sannin,你的最新版本的代码应该是好的 – mihai 2014-09-30 12:13:16