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

Firebase: how to get and set a global index counter?

本文关键字:设置 全局 索引 计数器 获取 何获取 Firebase      更新时间:2023-09-26

谁能帮我分析一下这段代码是如何实时地分布在很多人身上的?我希望所有的用户都能够更新一个实时图形,并发送值给它。

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

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();
    });

问题可能与count的局部变量有关,目前图在大多数用例中工作得很好,但是当很多人开始发送数据时,计数有时会变得无序

我查找了firebase的事务,我可以保持firebase上的total计数准确,但我不知道这将如何帮助客户端正确地增加计数器。

客户端可以直接调用事务方法。

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;
});