【问题标题】:retrieve data currentuser. from firebase return null检索数据当前用户。从火力基地返回空
【发布时间】:2020-02-04 16:19:55
【问题描述】:

您好,我正在尝试从实时 firebase 字段中检索数据,但它返回 null。我检查了 textView52.setText (firebaseUser.getEmail ());看看它是否真的连接并且它有效。问题在于从数据库中恢复一个值,在这种情况下是字段“名称”有人可以帮助我吗? 难道我做错了什么? 欢迎任何帮助。

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
    ref.child("Users").addListenerForSingleValueEvent(new ValueEventListener() {
        FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        String userUid = user.getUid();
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String data = dataSnapshot.child("name").getValue(String.class);
            textView52.setText(data);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

}

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    试试

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    String userUid = user.getUid();
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
    ref.child("Users").child(userUid).addListenerForSingleValueEvent(new ValueEventListener() {
    
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String data = dataSnapshot.child("name").getValue();
            textView52.setText(data);
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
    
        }
    });}
    

    【讨论】:

      【解决方案2】:

      更新! 检查那些行

      DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
      ref.child("Users").addListenerForSingleValueEvent(new ValueEventListener() {...}
      

      基本上你尝试在用户中调用另一个名为用户的孩子,为了理解很容易,在这里替换那个用户的

      ref.child("use_that_key_here").addListenerForSingleValueEvent(new ValueEventListener() {...}
      

      不是解决方案,您不能对每个键进行硬编码,但这样您应该可以看到数据

      试试这样的:

      // ref to db
      DatabaseReference ref= FirebaseDatabase.getInstance();
      ref.child("Users").addListenerForSingleValueEvent(new ValueEventListener() {
          @Override
          public void onDataChange(DataSnapshot dataSnapshot) {
             //debug this par and check if you can see your user
          }
      
          @Override
          public void onCancelled(@NonNull DatabaseError databaseError) {
      
          }
      });
      

      【讨论】:

      • 感谢您的回复,但我需要从当前用户那里获取。仍然感谢您的帮助。
      • 我明白了,但是您正在调用“用户”->“用户”->...当前用户与数据库无关,让我更新我的答案
      猜你喜欢
      • 2021-02-03
      • 1970-01-01
      • 2021-12-18
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 2016-09-17
      相关资源
      最近更新 更多