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

标签 javascript firebase firebase-realtime-database

任何人都可以帮助分析这段代码在实时分布在许多人身上的效果如何吗? 我希望所有用户都能够更新实时图表并向其发送值。

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

var count = 0;

发送一个值:

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

监听要添加到 firebase 的 Child:

 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 的总数计数准确,但我看不出这将如何帮助客户正确地增加他们的计数器。

最佳答案

客户可以调用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;
});

关于javascript - Firebase:如何获取和设置全局索引计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22312560/

相关文章:

jquery - jplayer和jquery,添加一个函数

android - java.lang.ClassNotFoundException : com. google.android.gms.common.GoogleApiAvailability 尝试将 arcore 与 mediapipe 集成时发生

android - Firebase 云消息传递错误 : Couldn't resolve host 'fcm.googleapis.com'

javascript - Firebase - 为离线情况设置与更新?

node.js - forEach函数结束时需要执行函数

javascript - 如何使按钮禁用

javascript - 在移动浏览器上使用 javascript 的文本框唯一数字

java - 将函数输出保存到 Firebase 和 Android 的变量

javascript - 尝试通过 javascript/jquery 根据链接文本有条件地禁用链接

c# - 如何在 C# Windows 窗体中将类对象更改为数组列表