【发布时间】:2021-10-26 01:39:42
【问题描述】:
我用一个复杂的查询来查询我的 firestore 数据库
.whereIn(gender_node, getInterestedIn())
.whereGreaterThanOrEqualTo(birthdate_year_node, getShowAgeMax() + 1)
.whereLessThanOrEqualTo(birthdate_year_node, getShowAgeMin())
但我遇到了IndexOutOfBoundException,因为getDocuments().size() 不等于getDocumentChanges().size()。
我在文档中找不到任何内容,有人知道何时或为什么 getDocuments().size() != getDocumentChanges().size() 吗?
我假设每个Document 都会有一个DocumentChange。
并非每次都会发生,因此很难调试。
有 7 个测试文档,getDocuments().size() 始终为 7,但 getDocumentChanges().size() 有时为 5。据我所见,似乎始终是数字 5。
【问题讨论】:
-
最后一行的右括号似乎不正确。应该是
.whereLessThanOrEqualTo(birthdate_year_node, getShowAgeMin())。 -
您尝试过 Frank van Puffelen 的建议吗?如果你去掉那个括号,它会起作用吗?
-
哦不,我稍微简化了源代码,而额外的附加说明是我做的。如果插入过多,IDE 会将其显示为语法错误。
-
能否分享您提到 getDocuments().size() != getDocumentChanges().size() 的代码?
-
代码中没有,我在调试器中看到了。在
SnapshotListenerEventListener<QuerySnapshot>中的onEvent中的任何地方都是如此。
标签: android firebase google-cloud-firestore