ios - 为什么在 Swift 中使用来自 Firestore 的侦听器获取数据时仍然会删除文档?
问题描述
我试图制作一个活动应用程序。我在我的活动文档中添加了一个新字段。我尝试为我的活动文档添加“场地”字段
所以在运行应用程序之前,我会删除 Firestore 数据库中的所有可用数据。但是当我将数据检索回应用程序时,据说“地点”为零,似乎“地点”字段不存在,尽管实际上“地点”字段存在于我的 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。提前致谢。
解决方案
推荐阅读
- c++ - 使用 clang CMake 包含 Boost 构建
- java - 如果假设一个接口是完全抽象的,为什么这段代码可以工作?
- vba - 为什么无法访问公共网站?
- oracle - Oracle 12c:使用用户定义的函数结果和 In 子句
- html - Xpath 节点集嵌套顺序选择
- android - Android - 资源解析如何影响构建性能?
- react-native - 如何在本地存储中存储和读取json文件的文件内容
- flutter - CheckboxListTile 中如何激活/停用?
- javascript - 如何向客户端发送数据并将其保存为 cookie
- python - 对具有多个值的字典进行排序