获取基于当前用户Firebase Android的父子的密钥值

时间:2018-03-16 14:45:58

标签: android firebase firebase-realtime-database

我正在尝试检索 ServiceFee 中的值。我不能直接做到

FirebaseDatabase.getInstance().getReference()
            .child("RequestService").child("Plumbers").child(uid)

因为 RequestService (如管道工)以下的孩子应该依赖于工人

中找到的当前用户的父子女>

如屏幕截图中显示的示例,用户 KO2rC .. 的父母是管道工,所以我应该先获得 ServiceFee

我尝试了in my previous post这项技术,但我似乎无法恢复价值,只有钥匙而且我不需要钥匙

1 个答案:

答案 0 :(得分:1)

试试这个:

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String uid=user.getUid();
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Workers");
ref.addSingleValueEventListener(new ValueEventListener(){
  @Override
 public void onDataChange(DataSnapshot dataSnapshot) {
     for(DataSnapshot datas: dataSnapshot.getChildren()){
        String plumbers=datas.getKey();

    DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("RequestService").child(plumbers).child(uid);
    ref.addSingleValueEventListener(new ValueEventListener(){
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {
        String fees=dataSnapshot.child("ServiceFee").getValue().toString();
     }
     @Override
     public void onCancelled(FirebaseError firebaseError) {

       }
    });
  }

    @Override
  public void onCancelled(FirebaseError firebaseError) {

   }
});

您可以执行上述操作,首先在child("Workers")添加快照,然后使用Plumbers迭代并检索getKey()的值。

之后添加嵌套侦听器并将检索到的Plumbers放入子child("RequestService").child(plumbers)内并检索值ServiceFee