Java 如何仅为特定用户检索firebase数据库?
我正在为我的android应用程序使用Firebase数据库。登录功能可用。应用程序中有书签/收藏夹选项。按下书签按钮后,数据将与用户id分开保存。正是我想要的。但问题是,当我试图在recycleview中检索保存的数据时,它们显示的是所有用户的数据,而不是登录的用户的数据。请帮帮我。我在recycleview中使用cardviewJava 如何仅为特定用户检索firebase数据库?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在为我的android应用程序使用Firebase数据库。登录功能可用。应用程序中有书签/收藏夹选项。按下书签按钮后,数据将与用户id分开保存。正是我想要的。但问题是,当我试图在recycleview中检索保存的数据时,它们显示的是所有用户的数据,而不是登录的用户的数据。请帮帮我。我在recycleview中使用cardview mUserDatabase=FirebaseDatabase.getInstance().getReference(“书签”); mUserDatabase.ke
mUserDatabase=FirebaseDatabase.getInstance().getReference(“书签”);
mUserDatabase.keepSynced(true)代码>您需要访问用户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。您需要访问用户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。要检索提供该用户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) {
}
});
要检索需要提供该用户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) {
}
});
这不是为每个用户存储收藏夹的好方法。相反,请将数据库结构更改为:
BookMarks
|UserUID
|10
|3
|UserUID2
|6
|10
此结构将帮助您在特定时间查看一个用户的所有收藏夹。
您当前的结构将限制您为一个用户或所有喜欢该项目的用户查看一个喜欢的项目这不是为每个用户存储收藏夹的好方法。相反,请将数据库结构更改为:
BookMarks
|UserUID
|10
|3
|UserUID2
|6
|10
此结构将帮助您在特定时间查看一个用户的所有收藏夹。
当前结构将限制您为一个用户或所有喜欢该项目的用户查看一个喜欢的项目它正在使用代码databasefavorite=FirebaseDatabase.getInstance().getReference(“Bookmarks”).child(FirebaseAuth.getInstance().getCurrentUser().getUid())代码>一切都很好。但在书签选项卡中,cardview下的内容显示为白色。以下是两个屏幕截图,它正在使用代码databasefavorite=FirebaseDatabase.getInstance().getReference(“Bookmarks”).child(FirebaseAuth.getInstance().getCurrentUser().getUid())代码>一切都很好。但在书签选项卡中,cardview下的内容显示为白色