为什么不能将它保存在Firebase中?

时间:2016-09-19 15:41:55

标签: java firebase firebase-realtime-database

注意:省略了Setter,getters和构造函数。

我正在尝试将一种简单对象保存到Firebase数据库。看起来像这样(这个类的存在只是为了让我能够保存TimeForDate列表):

public class ExpectedWorkSchedule {
    private List<TimeForDate> reportByDay; 
}

TimeForDate就是这样的。这只是捆绑了一段时间的日期:

public class TimeForDate {

    private MyDate myDate;
    private ConcreteTimeToReport concreteTimeToReport;

}

MyDate简化了日期:

public class MyDate {
    private int year;
    private int month;
    private int day;
}

TimeToReport只捆绑了几分钟和几小时:

public class ConcreteTimeToReport {

    private int minutes;
    private int hours;
}

以下是一些测试代码:

        List<TimeForDate> myList = Lists.newArrayList();
        myList.add(new TimeForDate(new MyDate(2014,1,1),new ConcreteTimeToReport(1,1)));
        mFirebaseDatabase.getReference(mLoginHolder.getUser().getUid()).child("Test").setValue(new ExpectedWorkSchedule(myList));

以这样结束的堆栈跟踪结束:

com.google.firebase.database.DatabaseException: Invalid key: . Keys must not contain '/', '.', '#', '$', '[', or ']'

我看到它的方式我在这里存储整数,我不知道firebase从哪里得到它的点,这似乎是抱怨的符号。我不明白,我在这里错过了什么?

1 个答案:

答案 0 :(得分:0)

所以解决方案很简单,但根本不满意。我没有使用ExpectedWorkSchedule类,而是像这样立即保存列表:

    List<TimeForDate> myList = Lists.newArrayList();
    myList.add(new TimeForDate(new MyDate(2014,1,1),new ConcreteTimeToReport(1,1)));
    mFirebaseDatabase.getReference(mLoginHolder.getUser().getUid()).child("Test").setValue(myList);

我无法理解为什么包装类会导致使用'。'但显然确实如此。