请帮助,我要从Firebase数据库添加用户点数据时遇到问题
我想将先前用户的点添加到新获得的点。这是我使用的代码
final DatabaseReference userDataRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userRefEmail);
userDataRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String userCurrentPoint = dataSnapshot.child("point").getValue().toString();
if (userCurrentPoint != null) {
int finalPoint = Integer.parseInt(userCurrentPoint) + poin;
userDataRef.child("point").setValue(String.valueOf(finalPoint));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
但是当我使用它时,firebase数据库中会无限增加连续的点数,我该如何处理呢?
答案 0 :(得分:2)
使用SingleValueEvent
代替ValueEventListener
,使用SingleValueEvent
只会调用一次:
userDataRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String userCurrentPoint = dataSnapshot.child("point").getValue().toString();
if (userCurrentPoint != null) {
int finalPoint = Integer.parseInt(userCurrentPoint) + poin;
userDataRef.child("point").setValue(String.valueOf(finalPoint));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});