【问题标题】:Adding data from firebase causes an infinite loop从 firebase 添加数据会导致无限循环
【发布时间】:2020-04-21 06:51:15
【问题描述】:

请帮忙,我想从 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数据库有无限连续加点,怎么处理呢?

【问题讨论】:

    标签: java android firebase asynchronous firebase-realtime-database


    【解决方案1】:

    使用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) {
            }
        });
    

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 2021-08-29
      • 2016-05-01
      • 2020-02-26
      • 2022-01-15
      • 1970-01-01
      • 2011-08-23
      • 2018-12-19
      • 2017-02-16
      相关资源
      最近更新 更多