为什么我在Swift中使用Firestore的监听器获取数据时仍然会删除文件?

时间:2018-05-20 11:56:33

标签: ios swift firebase google-cloud-firestore

我想制作一个活动应用。我在我的活动文件中添加了一个新字段。我尝试添加"场地"我的活动文件的字段

所以在我运行应用程序之前,我删除了我的Firestore数据库上的所有可用数据。但当我将我的数据检索回应用程序时,据说是#34;场所"是零,似乎"场地"字段不存在,即使事实上,"场地"字段存在于我的firestore数据库中。

我怀疑我的应用仍会检索已删除的文件。这就是为什么

这是我使用的代码:

enum FirestoreCollectionReference {
    case users
    case events
    case cities
    case APIKey

    private var path : String {
        switch self {
        case .users : return "users"
        case .events : return "events"
        case .cities : return "cities"
        case .APIKey : return "secretAPIKeyKM"
        }
    }

    func reference () -> CollectionReference {
        return Firestore.firestore().collection(path)
    }
}


FirestoreCollectionReference.events.reference()
                .whereField("city", isEqualTo: selectedCity)
                .whereField("eventType", isEqualTo: selectedEventType)
                .whereField("coordinate", isGreaterThan: lesserGeopoint)
                .whereField("coordinate", isLessThan: greaterGeopoint)
                .order(by: "coordinate")
                .order(by: "dateTimeStart", descending: true)
                .limit(to: 20)
                .addSnapshotListener { (snapshot, error) in

                    if let error = error {
                        completion(nil,eventListener)
                        print("Error when observing events document: \(error.localizedDescription)")
                    } else {
                        print("Successfully get events data from Firestore by Listener")

                        guard let documentsSnapshot = snapshot else {
                            completion(nil, eventListener)
                            return
                        }


                        let eventDocuments = documentsSnapshot.documents

                        print("the number of documents: \(eventDocuments.count)")


                        var eventsArray = [EventKM]()

                        for document in eventDocuments {
                            let eventDictionary = document.data()
                            let theEvent = EventKM(dictionary: eventDictionary)
                            eventsArray.append(theEvent)
                        }

                        completion(eventsArray,eventListener)

                    }

            }



        }

我尝试打印文档的数量,它显示我有8个来自此查询的文档,实际上,它应该只是我的数据库中可用的一个文档。

我尝试从firebase控制台删除复合索引,但通常在删除复合索引后,它会给出一个错误+一个链接,用于在我的Xcode上的调试区域生成复合索引,但是在我删除之后复合索引,我没有得到错误+链接来生成索引,并提供8个文档(它应该只是一个文档)

似乎数据缓存在我的iOS应用上。不是吗?或者这是一个错误,因为Firestore仍处于Beta版本?我需要了解为什么以及如何解决这个问题,这样我就能更好地理解firebase。提前谢谢。

1 个答案:

答案 0 :(得分:0)

FireBase 已缓存在设备中,因此如果用户留在互联网之外,
但仍然可以使用 Firebase。

所以您只需在模拟器中删除您的应用。

就我而言,它修复了。

enter image description here