Добавление данных из firebase вызывает бесконечный цикл - PullRequest
1 голос
/ 21 апреля 2020

Пожалуйста, помогите, у меня проблема, когда я хочу добавить данные о пользователях из базы данных Firebase

enter image description here

Я хочу добавить предыдущего пользователя указать на вновь полученную точку. Это код, который я использую

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, как мне справиться с этим?

1 Ответ

2 голосов
/ 21 апреля 2020

Используйте 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) {
        }
    });
...