我有一个连接到Firebase云数据库的Android应用。对于给定用户,数据库存储Reservation对象列表。
我遵循Google的指南将预订存储到数据库中:
private void addReservation() {
reservations = users.child(mReservation.getUserId()).child(KEY_RESERVATIONS);
reservations.push().setValue(mReservation);
}
推送成功保存,给定用户的JSON数据格式如下:
{
"email" : "fake.email@fake.com",
"reservations" : {
"-KMTRX1cOAu3v_pN1GHs" : {
"date" : "01/07/2018",
"formattedDate" : "01//0/7/2018",
"formattedSlot" : "10:/0",
"massage" : "Back massage",
"price" : 60,
"promoCode" : false,
"slot" : "10:00",
"userId" : "YD7uQGwApLe5Xi90BSGQhcOqSk32"
}
}
}
当我启动" ReservationsActivity"时,我使用此功能从数据库加载预订列表:
if (userHasReservations(dataSnapshot)) {
DataSnapshot snapshot = dataSnapshot.child(currentUser.getUid()).child(KEY_RESERVATIONS);
List<Reservation> userReservations = snapshot
.getValue(new GenericTypeIndicator<ArrayList<Reservation>>() {});
}
但是我收到了数据库错误。该函数需要一张地图:
DatabaseException: Expected a List while deserializing, but got a class java.util.HashMap
根据Google的文档,如果使用推送方法存储元素,则可以将其作为列表进行检索。但是,我一直遇到这个错误。
你能帮我解决这个问题吗?
非常感谢。