我想制作一个活动应用。我在我的活动文件中添加了一个新字段。我尝试添加"场地"我的活动文件的字段
所以在我运行应用程序之前,我删除了我的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。提前谢谢。