Firebaseを使用してレストランやバーの評価システムを作成しようとしています。これまで私は個人の評価を読み書きすることができました。私が抱えている問題は、特定のレストランの平均格付けを計算するために、格付けの保管額と保管されているすべての格付けの合計額を取得する必要があるということです。現時点では、私は評価の量を格納するために苦労しています。ここに私のコードがあるonDataChangeが無限ループに突き当たりました
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) {
}
});
何それはしかし、毎回のように、それはOnDataChangeの()メソッドが呼び出された格納され、それに1を加算し、現在格納されている値を取得し、データベースに戻って、それを書いているされて起こっています、プラス1をもう一度追加し、再び無限ループを作ります。 私の質問は、これを防止するため、あるいはこれを構成するための別の方法で行ってもよい変更はありますか?次のように おかげ
UPDATE
JSONコードは次のとおりです。
{
"ratings" : {
"porterhouse" : {
"numRating" : "0",
"totalRating" : "0"
}
}
本当にループがベースになるだろうJSONコード –
@MartinDeSimone ChildEventListenerがその特定のパスのすべての変更をリッスンし、リスナー内のそのパスを変更すると、何度も何度もトリガーされるため、コードに追加します – EoghanBradshaw
ののrelavent一部を示すように更新あなたのJSON構造を投稿 –