如何从Firebase数据库获取用户ID

时间:2019-05-31 02:29:15

标签: android firebase firebase-realtime-database

今天,我尝试获取firebase数据库的某个子项,但我不知道我的结构是否是我的最佳选择,所以我有一个类似“ rappi”的应用程序,并且如果有用户ID,则有子项empresa和子项像这样:

image of estructure

所以我想让孩子进入宠物店,而Logged用户在farmacia内部。我想知道从empresa获取ID的更好方法。

DatabaseReference produtosRef = firebaseRef
            .child("empresa")
            .child( "How i get this?" )
            .child(UserID);

我不知道该怎么办

Edit1:如果要通过“ petshop”或“ farmcia”,我想获取用户ID

1 个答案:

答案 0 :(得分:0)

我认为您已经有一个自定义类来存储对象。如果没有,请创建它!

class YourClass{
    public String categoria;
    public String email;
    public String uid;
    ///....and some attributes as in your pic you posted
}

接下来,在代码中的某个位置。从数据库获取所有对象。您需要将子事件侦听器添加到您的Firebase参考中。

ArrayList < YourClass > objects = new ArrayList < > ();
    DatabaseReference dataRef =
     FirebaseDatabase.getInstance().getReference("empresa").child("farmacia");
    dataRef.addChildEventListener(new ChildEventListener() {
     @Override
     public void onChildChanged(DataSnapshot snapshot, String previousChildName) {}

     @Override
     public void onCancelled() {
        System.err.println("Listener was cancelled");
     }

     @Override
     public void onChildAdded(DataSnapshot snapshot, String arg1) {
        YourClass object = 
           (YourClass(dataSnapshot.getValue(YourClass.class));
        if (object != null) objects.add(object);
        //from now you have object so you can access and modify or do anything with it
     }

     @Override
     public void onChildMoved(DataSnapshot arg0, String arg1) {
      // TODO Auto-generated method stub

     }

     @Override
     public void onChildRemoved(DataSnapshot arg0) {
      // TODO Auto-generated method stub

     }
 });