【问题标题】:How to retrieve firebase database for specific user only?如何仅为特定用户检索firebase数据库?
【发布时间】:2020-01-21 14:49:22
【问题描述】:

我正在为我的 android 应用程序使用 Firebase 数据库。登录功能可用。应用程序中有一个书签/收藏夹选项。按下书签按钮后,数据将分别与用户 ID 一起保存。正是我想要的。但问题是当我试图在recycleview中检索保存的数据时,它们显示的是所有用户的数据,而不是登录的用户。请帮助我。我在recycleview 中使用cardview。

 mUserDatabase = FirebaseDatabase.getInstance().getReference("Bookmarks");
        mUserDatabase.keepSynced(true);

这是我的成语短语数据库

是用户按书签按钮添加的数据

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    您需要访问用户 uid,因此只会显示该用户的数据:

    FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
    String userId=user.getUid();
    
    //String.valueOf(int)
    mUserDatabase = FirebaseDatabase.getInstance().getReference("Bookmarks").child(String.valueOf(10)).child(userId);
    

    getUid() 将检索当前登录用户的 id。

    【讨论】:

    【解决方案2】:

    要检索您需要提供该用户 ID 的特定用户数据,请尝试此代码,它可能会对您有所帮助

    mUserDatabase = FirebaseDatabase.getInstance().getReference("Bookmarks").child("10");
    
    Query query = mUserDatabase.child(userid);
    query.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                //your code
                }
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
        });
    

    【讨论】:

      【解决方案3】:

      这不是为每个用户存储收藏夹的好方法。相反,将您的数据库结构更改为:

      BookMarks   
          |UserUID
              |10
              |3
          |UserUID2
              |6
              |10
      

      此结构将帮助您查看某个用户在特定时间的所有收藏夹。 您当前的结构将限制您查看一个用户或所有收藏该项目的用户的收藏项目

      【讨论】:

        猜你喜欢
        • 2022-01-21
        • 2018-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-29
        相关资源
        最近更新 更多