Я застрял с получением данных из firebase и затем вернул их обратно после некоторых изменений.
Код, приведенный ниже, работает с проблемами, потому что мне нужно получить int и передать сумму его и другого значения в базу данных реального времени один раз, но он выдвинет ее несколько раз, после того, как в прошлый раз это было больше 39K строк, кроме 1 .
private DatabaseReference ratingReference = FirebaseDatabase.getInstance().getReference().child(Consts.RATING_DB);
public void setRating(String uid, int addPoint) {
ratingReference.child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int rating = 0;
if (dataSnapshot.child(Consts.RATING).getValue() != null) {
rating = Integer.valueOf(dataSnapshot.child(Consts.RATING).getValue().toString());
}
DatabaseReference ref = ratingReference.child(getUid()).push();
Map<String, Object> ratingMap = new HashMap<>();
ratingMap.put("rating", rating + addPoint);
ref.updateChildren(ratingMap);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
Буду очень признателен, если вы мне поможете, большое спасибо.