在Swift中返回空快照的Firebase查询

xurqigkl  于 2023-02-21  发布在  Swift
关注(0)|答案(1)|浏览(128)

我用来获取最近匹配的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字段添加到查询中,就没有任何结果。

owfi6suc

owfi6suc1#

在Firestore上运行的每个查询都需要一个与其条件和排序语句相匹配的索引。对于第一个查询,索引是自动生成的,但其他查询看起来都需要一个复合索引,您需要显式地告诉Firestore生成该索引。
生成所需索引的最简单方法是:
1.捕获代码可能引发的任何错误并将其记录下来。
1.在日志输出中查找错误消息。
1.找到URL链接并单击它。
1.这将把你带到Firestore控制台,在一个页面上生成索引,索引的所有细节都已经填写好了。
1.单击按钮开始生成索引。
请等待生成索引(这可能需要一些时间),然后重试。
另请参见index types上的Firestore文档。

相关问题