Firebase:如何获取和设置全局索引计数器?

时间:2014-03-10 22:19:02

标签: javascript firebase firebase-realtime-database

任何人都可以帮助分析这段代码在实时分配给多人的情况吗? 我希望所有用户都能够更新实时图表并向其发送值。

每个客户都有一个本地计数器变量:

var count = 0;

发送值:

 $('#addValue').click(function(){
        fbValues.push({ x: count, y: randomNum(30,60)});
 });

倾听孩子加入firebase:

 fbValues.on("child_added", function(snapshot) {

        count += 1;

        var x_coor = snapshot.val().x;
        var y_coor = snapshot.val().y;

        data.values.push({ x: x_coor, y: y_coor });
        updateGraph();

    });

问题可能在于计数的局部变量,目前这个图表适用于大多数用例,但是当很多人开始发送数据时,计数有时会不按顺序计算

我查找了firebase的交易,我可以对firebase的total计算准确,但我不知道这将如何帮助客户正确增加其计数器。

1 个答案:

答案 0 :(得分:2)

客户可以直接调用transaction方法。

var fb = new Firebase(URL);
var counterRef = fb.child('counter');
var valsRef = fb.child('values');

$('#addValue').click(function(){
    counterRef.transaction(function(currentVal) {
       return (currentVal||0)+1;
    },
    function(err, success, snap) {
       fbValues.push({ x: snap.val(), y: randomNum(30,60)});
    });
});

在本地,只需在计数器路径上听取更改:

var counter = 0;
counterRef.on('value', function(snap) {
   counter = snap.val() || 0;
});