Как запросить данные из FireStore? - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь запросить данные из Firestore, используя карту. Моя проблема в том, что я не могу получить только одно поле из пожарного магазина.

Приведенный ниже код является структурой моей модели данных.

UserData.swift

import Foundation
import FirebaseFirestore


struct UsersData {
    var BOOKS_Field:Int
    var NAME_FIELD:String
    var PHOTO_FIELD:String
    var USERLEVEL_FIELD:Int

    var dictionary:[String:Any] {
        return [
            "BOOKS_Field":BOOKS_Field,
            "NAME_FIELD":NAME_FIELD,
            "PHOTO_FIELD":PHOTO_FIELD,
            "USERLEVEL_FIELD":USERLEVEL_FIELD

        ]
    }
}


extension UsersData : DocumentSerializable {
    init?(dictionary: [String: Any]) {
        guard let BOOKS_Field = dictionary["BOOKS_Field"] as? Int,
            let NAME_FIELD = dictionary["NAME_FIELD"] as? String,
            let PHOTO_FIELD = dictionary["PHOTO_FIELD"] as? String,
            let USERLEVEL_FIELD = dictionary["USERLEVEL_FIELD"] as? Int
            else {return nil}
        self.init(BOOKS_Field: BOOKS_Field, NAME_FIELD: NAME_FIELD, PHOTO_FIELD:PHOTO_FIELD, USERLEVEL_FIELD:USERLEVEL_FIELD)
    }
}

Это место, где я пытаюсь получить пользователей с сервера Firestorm.

func getLeadersfromServer() {
        let leaderRef = db.collection("USERS_Collection").order(by: "BOOKS_Field", descending: true).limit(to: 5)

        leaderRef.addSnapshotListener { (snapShot, error) in
            if let error = error {
                print(error)
            } else {
                for document in (snapShot?.documents)! {
                    let data = document.data()
                    let docs = (data.compactMap({_ in UsersData(dictionary: data)}))

                    let user1 = docs[0]

                    print(user1.NAME_FIELD)

                }
            }
        }
    }

Результат печати можно найти ниже:

Name1 H.
Name2 B.

Как я могу получить только одно имя по заказу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...