如本问题的标题所述,我正在尝试从我的firebase当前用户检索特定数据。在我的Android应用程序中,我有一个名为“视图列表”的按钮,它创建了一个新的片段,在片段内我想让当前用户登录到firebase并访问用户保存在数据库中的保存位置。但是我对如何从数据库中显示当前用户的所有已保存位置感到困惑。我将在下面发布我的代码,我还将在firebase上发布我当前数据库的屏幕截图。
Click on this link for sreenshot of my database on Firebase
case R.id.navigation_view_list:
fragment = new ViewListFragment();
fragmentTransaction.replace(R.id.navigation_area, fragment);
fragmentTransaction.commit();
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference myRef = database.getReference();
myRef= myRef.child("Users").child(firebaseUser.getUid().toString()).child("Saved Location").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
for(DataSnapshot userSavedLocation : dataSnapshot.getChildren()){
Log.d("savedLocation", userSavedLocation.getValue());
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// handle database Error
}
});
return true;
答案 0 :(得分:0)
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
final DatabaseReference myRef = database.getReference();
myRef= myRef.child("Users").child(user.getUid).child("Saved Location").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot userSavedLocation : dataSnapshot.getChildren()){
String key=userSavedLocation.getKey();
String location=userSavedLocation.child(key).getValue().toString();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// handle database Error
}
});
这可能有用,我的想法是获取每个保存位置的随机按键,然后使用该键获取它的值。
答案 1 :(得分:0)
@Peter Haddad的回答是正确的,但是如果你仔细看看你的数据库,你会注意到你的数据没有以相同的方式存储。您有第一个用户WB ..... /保存的位置/位置。您的第二个用户d74 ... /保存位置将您的数据与位置对象保存在保存的位置。然后你的第三个用户恢复到你的第一个模式:rpn .... /保存的位置/位置。