我用来获取最近匹配的firebase查询是空的,我不知道为什么。我附上了我的查询和我的"Match"集合的照片。当我删除"date"和orderBy "date"的whereField时,它会获取匹配。但添加了查询的这一部分后,它会返回一个空的快照。
我的Fuser.currentUser是xFLLcqkXOjc2uNMWcLJyrHeryRC2,因此应该返回匹配项。
- 工作时间:**
FirebaseReference(.Match)
.whereField("memberIds", arrayContains: FUser.currentId())
.getDocuments
- 不工作:**
FirebaseReference(.Match)
.whereField("memberIds", arrayContains: FUser.currentId())
.whereField(kDATE, isGreaterThan: lastMonth)
.order(by: "date", descending: true)
.getDocuments
&&这也返回空快照:
FirebaseReference(.Match)
.whereField("memberIds", arrayContains: FUser.currentId()))
.order(by: "date", descending: true)
.getDocuments
enter image description hereenter image description here
我尝试更改查询,但一旦"date"通过whereField或orderBy字段添加到查询中,就没有任何结果。
1条答案
按热度按时间owfi6suc1#
在Firestore上运行的每个查询都需要一个与其条件和排序语句相匹配的索引。对于第一个查询,索引是自动生成的,但其他查询看起来都需要一个复合索引,您需要显式地告诉Firestore生成该索引。
生成所需索引的最简单方法是:
1.捕获代码可能引发的任何错误并将其记录下来。
1.在日志输出中查找错误消息。
1.找到URL链接并单击它。
1.这将把你带到Firestore控制台,在一个页面上生成索引,索引的所有细节都已经填写好了。
1.单击按钮开始生成索引。
请等待生成索引(这可能需要一些时间),然后重试。
另请参见index types上的Firestore文档。