【发布时间】:2018-06-04 09:24:15
【问题描述】:
我正在尝试使用 Firebase 为餐厅和酒吧创建评分系统。到目前为止,我能够阅读和编写个人评级。我遇到的问题是,为了计算特定餐厅的平均评分,我需要获取存储的评分数量和存储的所有评分的总值。目前,我正在努力存储收视率。这是我的代码
Query RetrieveRating = databaseReference.child("ratings").child("porterhouse");
RetrieveRating.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot postSnapshot) {
//get data from snapshot
String data = postSnapshot.child("numRating").getValue().toString();
if (!data.equals(null)) {
String numRating = (String) postSnapshot.child("numRating").getValue();
count = Integer.valueOf(numRating);
count++;
ratingCounter = Integer.toString(count);
databaseReference.child("ratings").child("porterhouse").child("numRating").setValue(ratingCounter);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
发生的情况是它获取当前存储的值,将其加 1 并将其写回数据库,但是每次存储时都会调用 onDataChange() 方法,一次又一次地加 1无限循环。 我的问题是,我是否可以进行任何更改以防止这种情况发生,甚至可以采用不同的方式进行配置? 谢谢
更新
json代码如下:
{
"ratings" : {
"porterhouse" : {
"numRating" : "0",
"totalRating" : "0"
}
}
【问题讨论】:
-
发布你的 json 结构
-
@MartinDeSimone 更新以显示 json 代码的相关部分
-
这确实会根据您的代码创建一个循环,因为 ChildEventListener 会侦听该特定路径上的所有更改,并且在侦听器内更改该路径会一次又一次地触发它
-
您能发布您的整个 JSON 数据库架构吗?
标签: android firebase firebase-realtime-database