检索数据currentuser。从firebase返回null

时间:2020-02-04 03:22:19

标签: android firebase firebase-realtime-database

您好,我正在尝试从实时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) {

        }
    });

}

enter image description here

2 个答案:

答案 0 :(得分:2)

尝试

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) {

    }
});}

答案 1 :(得分:0)

已更新! 检查那些行

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

基本上,您尝试在Users中调用另一个名为User的孩子,以非常容易理解,请在此处替换该用户的

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) {

    }
});