Firebase返回null但数据存在

3

我花了几个小时的时间寻找原因,为什么我的代码无法从这个结构体 X 中检索出 "firstName" 字段。

Firebase structure

当我处于调试模式时,我可以看到Firebase检索与“firstName”在同一层级的所有其他字段,但是最后一个始终为空,即使它包含有效数据。

Debugged object

这是我创建FirestoreRecyclerOptions的代码行:
FirestoreRecyclerOptions<X> optionsFirestore = new FirestoreRecyclerOptions.Builder<X>().setQuery(queryFirestore, X.class).build();

我是Android的初学者,非常感谢任何帮助/解释。

提前感谢您的帮助!

编辑:

这是我的queryFirestore:

queryFirestore = FirebaseFirestore.getInstance().collection("idea").whereEqualTo("uid", currentUser.getUid());

而X类是一个包含数据结构的POJO:

public class X {

public String uid;
public String avatar;
public String firstName;
public String lastName;
public Integer age;
public String title;
public String category;
public String location;
public String comment;

public X() {
}

public X(String uid, String avatar, String firstName, String lastName, Integer age, String title, String category, String location, String comment) {
    this.uid = uid;
    this.avatar = avatar;
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.title = title;
    this.category = category;
    this.location = location;
    this.comment = comment;
}

public String getUid() {
    return uid;
}

public void setUid(String uid) {
    this.uid = uid;
}

public String getAvatar() {
    return avatar;
}

public void setAvatar(String avatar) {
    this.avatar = avatar;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public Integer getAge() {
    return age;
}

public void setAge(Integer age) {
    this.age = age;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getCategory() {
    return category;
}

public void setCategory(String category) {
    this.category = category;
}

public String getLocation() {
    return location;
}

public void setLocation(String location) {
    this.location = location;
}

public String getComment() {
    return comment;
}

public void setComment(String comment) {
    this.comment = comment;
}
}

很难确定你的引用是否正确。 - jbmcle
2
这里缺少很多信息。请编辑问题,展示如何构建queryFirestoreX类的代码。 - Doug Stevenson
我已经通过添加X类的代码和构建Firestore查询的行来编辑了我的问题。如果您需要其他有助于理解问题的信息,请告诉我。 - serendipity
1
@ʍѳђઽ૯ท 是的,2个字段agelastName都是空的,在调试中正确显示为null。我的问题在于firstName字段包含未检索到的数据 :/ - serendipity
1个回答

1
问题在于 setFirstName() 方法中:
public void setFirstName(String firstName) {
    firstName = firstName;
}

尝试将其更改为:

public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

这就是为什么……

就是这样!我修好了,现在它可以正常工作了!但是设置器中的错误如何导致获取器出现故障?O_o非常感谢! - serendipity
如果这是由AS自动生成的,那么确实很奇怪。顺便说一句,你发现得不错,朋友。编码愉快。 - ʍѳђઽ૯ท
我到处寻找,但我的眼睛并没有太注意那个setter..你在这里做得很出色:))再次感谢! - serendipity
是的,一开始感觉有点奇怪,因为代码完全相同,只需要稍加注意即可。很高兴能帮忙 :) 不客气。 - ʍѳђઽ૯ท

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接