【发布时间】:2021-03-21 19:39:04
【问题描述】:
我有一个 Fierbase 实时数据库,其结构如下:
data
0
category : "Some category"
1
category : "Some category"
2
category : "Another category"
这是一个包含不同类别项目的长列表(他们有更多字段,我认为购买它们与此无关)。 我正在查询给定类别的所有项目:
firebaseDatabase.child("data")
.orderByChild("category")
.equalTo(category.name)
我正在通过以下方式处理快照:
snapshot.getValue<List<FirebaseEntry>>()!!.filterNotNull().map { it.toEntry() }
这段代码似乎运行良好(我可以获取某些类别的所有条目),虽然我测试了不同的类别,但我只得到了其中一些类别的异常:
com.google.firebase.database.DatabaseException:反序列化时需要一个列表,但得到一个类 java.util.HashMap
我不明白为什么它对某些类别有效而对其他类别无效,因为所有类别的数据结构都是相同的。然后我尝试将其解析为 HashMap:
snapshot.getValue<HashMap<String, FirebaseEntry>>()!!.map { it.value.toEntry() }.sortedBy { it.id }
这显然修复了这些类别,但我在以前工作的那些类别中遇到了一个例外:
com.google.firebase.database.DatabaseException:反序列化时需要一个 Map,但得到一个类 java.util.ArrayList
当数据库中的数据相似时,是否有理由导致结果以不同的格式出现? 完整列表大约有 300 项,它们按类别顺序排列(首先是一个类别的所有项目,然后是另一个类别,依此类推),我认为这不是原因,但我现在迷路了,我不能看看有什么问题。
【问题讨论】:
标签: android firebase kotlin firebase-realtime-database