Android Firebase获取每个用户的数据

时间:2018-03-11 04:55:11

标签: java android firebase firebase-realtime-database firebase-authentication

例如,我的数据库中有2个主要节点(可能有更多)。父节点是用户的身份验证ID并在其中 你可以看到一些细节。 如果任何用户登录其活动中填充的所有其他用户的数据,我试图这样做 但我真的不知道如何开始,因为每个用户都有自己的身份验证ID,并且还有子节点,如地图位置和图像 如何获取活动的每个用户详细信息?

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以做的是使用这样的事件监听器从fbuserinfo节点获取数据并迭代数据。这里User.class是您创建的用户模型的类

DatabaseReference userDataReference = FirebaseDatabase.getInstance().getReference()
    .child("fbuserinfo");

    ValueEventListener valueEventListener = new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot ds : dataSnapshot.getChildren()) {
          User user = ds.getValue(User.class);
          Log.d("User", user);
        }
      }
    }

    @Override
    public void onCancelled (DatabaseError databaseError){
      Log.d(TAG, "Error fetching user data - " + databaseError.getMessage());
    }
  }
userDataReference.addListenerForSingleValueEvent(eventListener); 

然后,如果要显示数据,可以在for循环中执行,并使用if条件检查用户是否不等于当前的

答案 1 :(得分:0)

使用以下示例,您将能够记录数据库中所有用户的name

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference fbRef = rootRef.child("Users").child("fbusersinfo");
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) {}
};
fbRef.addListenerForSingleValueEvent(eventListener);

输出将是:

Ahmend Abbas
mahanoor 4

如果您还需要其他属性,您可以采用相同的方式获取它们。