如何使用push生成firebase增量计数器

时间:2016-10-13 02:06:08

标签: javascript firebase firebase-realtime-database

hiii ...如何在firebase中制作增量计数器的任何建议 我已经在使用这段代码了

firebase.database().ref(‘myData/' ).once('value', function(qTotal) {
    total = qTotal.numChildren() + 1;
    console.log(" counter" + total);
    var queId = firebase.database().ref(‘myData/').push({
      counter : total,
      dateCreated: Date()
    }).key;
}

但有时numChildren()会在数据插入速度非常快时生成相同的计数器。

1 个答案:

答案 0 :(得分:3)

如果您想以最简单的方式执行此操作,可以使用事务:

var ref = firebase.database().ref(‘myData/' );
ref.transaction(function(qTotal) {
    var current = qTotal ? qTotal.numChildren() : 0;
    var total = current + 1;
    var queId = ref.push().key;
    qtotal[queId] = {
      counter : total,
      dateCreated: Date()
    };
    return qTotal;
}

但是,增加许多并发用户的计数器将导致可伸缩性问题。每个用户都必须下载总数据才能向其中添加项目。

要详细了解此消息以及Firebase如何建议您对此类列表进行建模,请阅读以下博文:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html