我的firebase结构如下所示:
这些组使用firebase生成的密钥,0和1只是示例 .
在这些组中有更多数据,如"groupname" .
How should I retrieve the groupnames of all groups linked to a user?我在Android上 .
亚历克斯解决了 .
假设 groups 节点是Firebase根目录的直接子节点并且在单个组内,则有一个名为 groupName 的键,请使用以下代码:
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的用户的密钥 .
userKey
1 回答
假设
groups
节点是Firebase根目录的直接子节点并且在单个组内,则有一个名为groupName
的键,请使用以下代码:如果您只需要能够获取用户链接到的组的组名,则需要像这样查询两次:
其中
userKey
是您希望获取组ID的用户的密钥 .