实际上我正在将所有主题的数据提取到listView
分别是病理学和社会科学。
当我检索密钥时,我得到了结束日期和开始日期。
我怎样才能得到唯一有像这里病理学和土壤场景这样的节点的孩子。 ?
当您使用 Firebase 检索节点时,它始终检索整个节点。没有办法获得没有子节点的节点,或者(超出查询所能做的)有子节点的子集。
当您有这种需求时,通常意味着您在一个分支中混合了两种类型的数据。 Firebase 文档建议使用 avoiding such data nesting。
在您的情况下,我会将数据拆分为两个顶级节点,每个节点的子节点都具有相同的键。类似的东西:
ExamInfos: {
"-MV8_...": {
"endingDate": ...,
"examType": ...,
"programme": ...,
"startingDate": ...
}
},
ExamSugbjects: {
"-MV8_...": {
"PATHOLOGY": { ... },
"SOIL SCIENCE": { ... }
}
}
现在您可以通过加载其 ExamSubjects
子节点来获取考试的所有科目,通过加载其 ExamInfos
子节点来获取所有其他信息,如果需要,您可以同时加载两者。与许多开发人员最初的预期相反,这不会花费更多时间,因为 Firebase 可以pipeline the requests over its existing web socket connection。
作为单独的建议,我还考虑以允许更多排序和过滤的格式存储日期。最常见的格式是 2021 年 3 月 7 日的 2021-03-07
。