【问题标题】:Getting null while getting data from Firebase RTD从 Firebase RTD 获取数据时获取 null
【发布时间】:2021-10-12 05:18:25
【问题描述】:

我正在开发一个可以登录/注册的简单应用。

一切正常,除了当我尝试从实时数据库上的“用户”路径获取数据时,即使我已经推送了我的数据,我的 UID 总是为空,这不是一个太复杂的部分,我可以正常获取数据与其他数据完全相同的类型?

这是我定义用户对象的部分:

public class User {

    String profile_picture_url , username , user_email, user_uid;

    public User(){

    }

    public User(String profile_picture_url , String userUID , String username,String user_email)
    {
        this.profile_picture_url = profile_picture_url;
        this.user_uid = userUID;
        this.username = username;
        this.user_email = user_email;
    }

    //GETTER
    public String getProfile_picture_url() {
        return profile_picture_url;
    }

    public String getUsername() {
        return username;
    }

    public String getUser_EMail() {
        return user_email;
    }

    public String getUserUID() {
        return user_uid;
    }
}

这是我在 Firebase 上的 json 树:

这是我检索数据的部分:

private void readUserFromFB() {
    FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    Log.d("firebase_debug2",firebaseUser.getUid());
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
            userList.clear();
            for (DataSnapshot snapshot1 : snapshot.getChildren()) {
                User user = snapshot1.getValue(User.class);

                Log.d("firebase_debug2", " This is email " + user.getUser_EMail());
                Log.d("firebase_debug2","This is uid " + user.getUserUID());
                Log.d("firebase_debug2", "This is username " + user.getUsername());

              
                userAdapter = new UserAdapter(getContext(), userList);
                recyclerView.setAdapter(userAdapter);


            }
        }

        @Override
        public void onCancelled(@NonNull @NotNull DatabaseError error) {

        }
    });

}

在 logcat 中获取:

This is email tas@gmail.com
This is uid null
This is username tas
This is email wwqw@gmail.com
This is uid null
This is username wiiwi

为什么我会遇到这个烦人的问题,希望有人能帮我找出答案,因为我尝试了几个小时但无法弄清楚我错过了哪里。谢谢

【问题讨论】:

    标签: java android json firebase firebase-realtime-database


    【解决方案1】:

    数据库的 JSON 中的属性称为 user_uid,但在您的 Java 代码中,您有:

    public String getUserUID() {
        return user_uid;
    }
    

    Firebase 遵循 JavaBean 属性命名约定,因此属性 user_uid 的 getter 应该是:

    public String getUser_uid() {
        return user_uid;
    }
    

    同样,setter 应该是 setUser_uid(String newUid),或者如果是公开的,那么字段应该是 user_uid

    或者,您可以将 JSON 中的属性名称更改为 userUID,使其与您的代码匹配,或者使用注释明确告诉 Firebase 数据库中的属性名称:

    @PropertyName("user_uid")
    public String getUserUID() {
        return user_uid;
    }
    

    也可以看看:

    【讨论】:

    • 谢谢,它解决了问题,帮助我学到了新东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多