Javascript 如何使用push生成firebase增量计数器
嗨。。。如何在firebase中创建增量计数器,有什么建议吗 我已经在使用这个代码了Javascript 如何使用push生成firebase增量计数器,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,嗨。。。如何在firebase中创建增量计数器,有什么建议吗 我已经在使用这个代码了 firebase.database().ref(‘myData/' ).once('value', function(qTotal) { total = qTotal.numChildren() + 1; console.log(" counter" + total); var queId = firebase.database().ref(‘myData/').push({
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()会在数据插入速度非常快时生成相同的计数器。如果希望以最简单的方式执行此操作,可以使用事务:
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建议您如何为此类列表建模的信息,请阅读以下博文:如果您希望以尽可能简单的方式进行建模,可以使用事务:
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如何推荐您对此类列表进行建模,请阅读以下博文:谢谢。。。那么,给每个用户一个唯一的增量号码(供他们参考)以及以先进先出的方式处理它的好方法是什么呢?您已经在调用
push()
,这会为您生成一个唯一的ID。对不起,我的意思是。。。表示人的完整数字[1,2,3…(用户知道他们的任务将在何时处理)推式生成长stringTypeError:无法在Object.update(controlers.js:2019)读取null的属性'numChildren'。谢谢。。。那么,给每个用户一个唯一的增量号码(供他们参考)以及以先进先出的方式处理它的好方法是什么呢?您已经在调用push()
,这会为您生成一个唯一的ID。对不起,我的意思是。。。表示人的完整数字[1,2,3…(用户知道他们的任务将在何时处理)推式生成长stringTypeError:无法在Object.update(controlers.js:2019)读取null的属性'numChildren'