注意:省略了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从哪里得到它的点,这似乎是抱怨的符号。我不明白,我在这里错过了什么?
答案 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);
我无法理解为什么包装类会导致使用'。'但显然确实如此。