使用Android中的uid从Firebase获取用户节点?

时间:2018-07-15 14:31:36

标签: java android firebase firebase-realtime-database

如何使用通过以下方式生成的uid获取用户节点:

     String uid=
     FirebaseAuth.getInstance().getCurrentUser().getUid();

The JSON is here

2 个答案:

答案 0 :(得分:1)

您将需要创建一个POJO对象类,以便从该当前uid用户获取属性

为此,首先使用您的用户变量创建一个类,我将其称为UserPojo.class

public class userPojo {

 private String email;
    private String id;
    private String name;


    public userPojo() {

    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

 }

然后遍历该节点并以这种方式获取值

首先声明您的数据库引用

private DatabaseReference mDatabase;

然后在onCreate()

mDatabase = FirebaseDatabase.getInstance().getReference(); //root reference to the database

然后只需获取引用内的值

 mDatabase.child("collion").child(uid).addValueEventListener(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {

        for(DataSnapshot snapShot : dataSnapshot.getChildren()){
        UserPojo user = snapShot.getValue(UserPojo.class);
        //get your values inside that uid
         String name = polla.geName();
         String email = polla.getEmail();
         String id = polla.getId();

          Log.e("Data: " , "" + name + "" + email+""+id);

           }


      }

      @Override
      public void onCancelled(DatabaseError databaseError) {
        System.out.println("The read failed: " + databaseError.getCode());
      }
    });

仅此而已,任何问题都可以随便问

答案 1 :(得分:1)

我正在根据here的请求写此答案,但是我看到,尽管您从uid对象获得了FirebaseUser,但您根本没有使用它。您仍在使用push()方法提供的随机唯一密钥。因此,如果要使用uid,则数据库结构应如下所示:

Firebase-root
   |
   --- users
         |
         --- uid
              |
              --- email: "nicefawad1@gmail.com"
              |
              --- uid: "uid"
              |
              --- name: "fawad"

看,我已经使用了以下代码行产生的uid

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

为了读取此数据,您有两个选择。第一个是@GastónSaillén在回答中使用模型类解释的,或者使用String类以更简单的方式解释。因此,要获取特定用户的名称,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("users").child(uid);
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) {}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

您的logcat中的结果将是:fawad