【问题标题】:Model class returning null from firebase query (query result does not return null)从 Firebase 查询返回 null 的模型类(查询结果不返回 null)
【发布时间】:2021-05-29 11:50:16
【问题描述】:

Firebase 查询为此查询返回值

Query query = databaseReference.child("users").orderByChild("display_name").equalTo(s.toString());

{nfxQ14lxSIZ0qgTGllZ297b0nTv2={display_name=Friends, token= token_value}}

项目被模型类捕获

        query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            UserInfo userInfo = snapshot.getValue(UserInfo.class);
            userInfo.getDisplay_name()
        }

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

        }
    });

但是,返回 null

模型类

public class UserInfo {

@SerializedName("display_name")
private String display_name;
@SerializedName("token")
private String token;

public UserInfo() {}

public String getDisplay_name() {return display_name;}

public void setDisplay_name(String display_name) { this.display_name = display_name;}

public String getToken() {return token;}

public void setToken(String token) {this.token = token;}
}

数据库结构如下

我正在遵循这个问题的逻辑

How to Convert Firebase data to Java Object...?

然而,一旦查询结果被转换,我仍然得到一个空结果

我认为问题在于,当我请求密钥时,我正在取回用户,而不是 uid 或 display_name 下方的一步

【问题讨论】:

  • 请编辑您的问题并将您的数据库结构添加为 JSON 文件或至少是屏幕截图,而不是描述您的数据库的外观。
  • 已添加@AlexMamo图片描述数据库结构

标签: android firebase pojo


【解决方案1】:

这里的解决方法很简单

ValueEventListener 应该是 ChildEventListener

通过这种方式,snapshot.getKey() 返回子值,因此可以通过使用访问较低的键

String text = (String) snapshot.getChild("some_lower_key").getValue();
String diffOption = snapshot.getValue(Model.class);

但最主要的是在使用 Firebase 查询时使用 ChildEventListener

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2013-04-28
    • 2019-06-14
    • 2020-01-07
    • 2015-11-12
    相关资源
    最近更新 更多