首页 > 解决方案 > 如何从 Firebase 数据库中获取用户 ID

问题描述

今天我尝试获取一些firebase数据库的孩子,我不知道我的结构是否是我最好的情况,所以我有一个像“rappi”这样的应用程序,如果用户 id 像这样,我有孩子 empresa 和孩子:

结构图

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

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

我不知道如何获得第二个实例

Edit1:如果通过“petshop”或“farmácia”,我想获取用户 ID

标签: androidfirebasefirebase-realtime-database

解决方案


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

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

     }
 });

推荐阅读