Получить документ от текущего пользователя firebase swift - PullRequest
2 голосов
/ 07 ноября 2019

Я пытаюсь получить имя из этого: enter image description here

Пользователь вошел в систему, и я могу получить доступ к его uid, но я не могу получить документ, которыйпринадлежит этому пользователю, вот как я пытаюсь это сделать:

    private func getDocument() {

        var userID = Auth.auth().currentUser?.uid
            userID = String(userID!)

        var currentUser = Auth.auth().currentUser


//         Get sspecific document from current user
        let docRef = db.collection("users").document("bnf2s3RURUSV2Oecng9t")

        // Get data
        docRef.getDocument { (document, error) in
            if let document = document, document.exists {
                let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
                print("Document data: \(dataDescription)")
            } else {
                print("Document does not exist")
            }
        }
    }

Если вы заметили, если я поставлю вручную "bnf2s3RURUSV2Oecng9t", он получит доступ к данным, но дело в том, чтобызнаю, что такое "" bnf2s3RURUSV2Oecng9t ", чтобы я мог поместить его в эту жестко закодированную переменную сверху. Моя конечная цель - получить имя текущего пользователя:)

1 Ответ

1 голос
/ 07 ноября 2019

Проблема в том, что ваш текущий аутентифицированный пользовательский uid не совпадает с uid документа. Так что обычно, если те идентификаторы, где то же самое, вы бы сделали что-то вроде этого:

    private func getDocument() {
        //Get specific document from current user
        let docRef = Firestore.firestore().collection("users").document(Auth.auth().currentUser?.uid ?? "")

        // Get data
        docRef.getDocument { (document, error) in
            if let document = document, document.exists {
                let dataDescription = document.data()
                print(dataDescription?["firstname"])
            } else {
                print("Document does not exist")
            }
        }
    }

Но в вашем случае вам нужно будет сделать это так, поскольку эти значения не совпадают.

   private func getDocument() {
        //Get sspecific document from current user
        let docRef = Firestore.firestore().collection("users").whereField("uid", isEqualTo: Auth.auth().currentUser?.uid ?? "")

        // Get data
        docRef.getDocuments { (querySnapshot, err) in
            if let err = err {
                print(err.localizedDescription)
                return
            } else if querySnapshot!.documents.count != 1 {
                print("More than one documents or none")
            } else {
                let document = querySnapshot!.documents.first
                let dataDescription = document?.data()
                guard let firstname = dataDescription?["firstname"] else { return }
                print(firstname)
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...