如何只为特定用户检索Firebase数据库?

时间:2018-07-21 08:48:55

标签: android firebase firebase-realtime-database

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

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

这是我的成语短语数据库 enter image description here

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

enter image description here

3 个答案:

答案 0 :(得分:3)

您需要访问用户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。

答案 1 :(得分:0)

要检索特定用户的数据,您需要提供该用户的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) {

        }
    });

答案 2 :(得分:0)

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

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

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