2017-08-03 52 views
0

我的firebase结构如下所示: user structure
这些组使用由firebase生成的键,0和1仅仅是示例。
enter image description here 在这些组中有更多的数据,比如“groupname”。获取Firebase的链接数据

我该如何检索链接到用户的所有组的组名?
我在Android上。

由Alex解决。

回答

1

假设groups节点是你的火力地堡根和内单个组的直接孩子,有一个名为groupName键,请使用如下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference groupsRef = rootRef.child("groups"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String name = ds.child("name").getValue(String.class); 
      Log.d("TAG", name); 
     } 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
groupsRef.addListenerForSingleValueEvent(eventListener); 

如果您需要能够得到的只是你的用户链接到组的组名,你需要这样的查询两次:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference userGroupsRef = rootRef.child("users").child(userKey).child("groups"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String groupKey = ds.getKey(); 

      DatabaseReference groupKeyRef = rootRef.child("groups").child(groupKey); 
      ValueEventListener valueEventListener = new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        String name = dataSnapshot.child("name").getValue(String.class); 
        Log.d("TAG", name); 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) {} 
      }; 
      groupKeyRef.addListenerForSingleValueEvent(valueEventListener); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
userGroupsRef.addListenerForSingleValueEvent(eventListener); 

在这userKey是您希望得到的组ID的用户的关键。

+0

这不是返回所有*组名而不是特定用户组的组名吗? –

+0

这的确能让我获得我所有小组的所有组名。但我希望能够只获取我的用户链接到的组的组名。 – DeGoosseZ

+0

@alexkucksdorf不,它不。它返回我所有组的组名。 –