从当前用户从Firebase数据库中检索数据

时间:2017-12-10 22:10:40

标签: android firebase firebase-realtime-database firebase-authentication

如本问题的标题所述,我正在尝试从我的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;

2 个答案:

答案 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 .... /保存的位置/位置。