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

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


因为RequestService以下的子项(例如Plumbers)应取决于在Workers中找到的当前用户的父级子项

如屏幕快照中所示的示例,用户KO2rC ..的父级孩子是Plumbers,因此在获得ServiceFee值之前,我应该先获取它

我尝试了in my previous post技术,但似乎无法恢复该值,仅恢复了密钥,并且不需要密钥

最佳答案

尝试这个:

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

09-13 00:09