为什么Firestore有时不返回任何东西,没有错误,什么也没有?

时间:2018-12-10 15:49:21

标签: swift firebase google-cloud-firestore

我正在做一个简单的查询,并且Firestore定期不返回任何内容。没有错误,没有结果,什么都没有。

Firestore.firestore().collection("groupChats")
        .order(by: kUpdatedAt, descending: true)
        .whereField("memberIds", arrayContains: currentUserId)
        .limit(to: 15).getDocuments { [weak self] snapshot, error in 
             // nothing inside here ever hits
        }

我不太确定该如何进行或调试,因为这似乎在Firestore中。用户具有互联网连接。拉动刷新并再次调用该查询将返回相同的看似无操作的结果。

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:0)

该问题最终在默认情况下处于打开状态,并且由于开发和迁移,我在设备上拥有大量缓存。在Firestore()初始化过程中,关闭离线缓存可以大大帮助这一点,并使我的应用程序再次可用。

答案 1 :(得分:0)

您应该使用以下代码

Firestore.firestore().collection("groupChats")
        .order(by: kUpdatedAt, descending: true)
        .whereField("memberIds", arrayContains: currentUserId)
        .limit(to: 15).getDocuments { (snapshot, error) in 
if error != nil{
            print("Error getting documents: \(error)")
        } else {
            for document in (snapshot?.documents)! {
                print("\(document.documentID) => \(document.data())")
            }
        }

答案 2 :(得分:0)

我遇到了同样的问题,对我来说,查询字段是以保留字命名的。 val type:String=""我将保留更改为非保留,查询也像魔术一样工作。

我的代码就像

val query=FirebaseFirestore.getInstance()
            .collection("Organizations")
            .orderBy("name")
            .whereEqualTo("type",orgType)

所以我将其更改为更有意义的内容,如下所示。

val query=FirebaseFirestore.getInstance()
            .collection("Organizations")
            .orderBy("name")
            .whereEqualTo("organizationtype",orgType)