База данных Firestore Запрос разных вещей в одной функции - PullRequest
0 голосов
/ 14 апреля 2019

В настоящее время я использую эту функцию для чтения документов в своей базе данных пожарного магазина.

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 в параметрах, и это не сработало?Я все еще хочу сохранить там фильтр запросов, если мне нужно что-то запросить в будущем

...