首页 文章

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

提问于
浏览
0

正如在这个问题的 Headers 中提到的,我正在尝试从我的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

    @Peter Haddad的回答是正确的,但是如果你仔细看看你的数据库,你会注意到你的数据没有以相同的方式存储 . 您有第一个用户WB ..... /保存的位置/位置 . 您的第二个用户d74 ... /保存位置将您的数据与位置对象保存在保存的位置 . 然后你的第三个用户恢复到你的第一个模式:rpn .... /保存的位置/位置 .

  • 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
                            }
                        });
    

    这可能有用,想法是获取每个保存位置的随机按键,然后使用该键获取它的值 .

相关问题