如何通过搜索另一个子值来更新某些值?

时间:2019-05-12 08:59:28

标签: android firebase firebase-realtime-database

我正在Android Studio上制作应用程序 使用Firebase,我在更新数据时遇到问题。

我正在尝试通过搜索另一个具有确定值的孩子来更新一个孩子。

enter image description here

这是我的结构,我想将dailyRank更新为2,其中dailyTotalDis为5.8。

这是我写的一些代码。

 FirebaseDatabase database = FirebaseDatabase.getInstance();
 ref = database.getReference("RECORD");

 String check = "dailyData/1557360000000/";
 ref.child(check).child("dailyTotalDis").equalTo("5.8").setValue("1");

我确定我的代码有问题,但是我不知道该如何处理。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您要基于dailyRank值更新dailyTotalDis,请尝试以下操作:

FirebaseDatabase database = FirebaseDatabase.getInstance();
ref = database.getReference("RECORD");
String check = "CTJZNO5pU2RzlAQa7ol5OlQoTmU2/dailyData/1557360000000/";

ref.child(check).addListenerForSingleValueEvent(new ValueEventListener() {
 @Override
public void onDataChange(DataSnapshot dataSnapshot) {
   Integer value = dataSnapshot.child("dailyTotalDis").getValue(Integer.class);
   if(value.equalsTo(5.8))
        ref.child(check).child("dailyRank").setValue("1");
}

@Override
public void onCancelled(FirebaseError firebaseError) {
  }
});

首先,获取对您节点的引用,然后检索dailyTotalDis的值,并在满足条件的情况下更新dailyRank