В настоящее время я использую эту функцию для чтения документов в своей базе данных пожарного магазина.
enum SparkReferenceName: String {
case users
case leaderboards
}
private func reference(to collectionReference: SparkReferenceName) -> CollectionReference {
return Firestore.firestore().collection(collectionReference.rawValue)
}
func read<T: Decodable>(from collectionReference: SparkReferenceName, returning objectType: T.Type, completion: @escaping ([T]) -> Void) {
reference(to: collectionReference).whereField("region", isEqualTo:"Russia").addSnapshotListener { (snapshot, _) in
guard let snapshot = snapshot else { return }
do {
var objects = [T]()
for document in snapshot.documents {
let object = try document.decode(as: objectType.self)
objects.append(object)
}
completion(objects)
} catch {
print(error)
}
}
}
Моя проблема иногда заключается в том, что я хочу отфильтровать результаты поиска, где определенное поле равно чему-либо, или фильтр для поля.это больше, чем определенное число, или иногда я вообще не хочу фильтровать поиск и просто возвращать все, что он мне дает.
Так что в этой строке моего кода я использую свой запрос дляОтфильтруйте мои результаты:
reference(to: collectionReference).whereField("region", isEqualTo:"Russia").addSnapshotListener {
Как мне не использовать фильтр запросов при вызове функции, потому что я пытался использовать nil в параметрах, и это не сработало?Я все еще хочу сохранить там фильтр запросов, если мне нужно что-то запросить в будущем