PvDev
PvDev

Reputation: 829

how to get current user document in firestore swift

When user login done successfully, it takes to home screen. When user taps on user icon button will take to user account details page. here i have already in firebase to retrieve data from database.

here is the code is used:

func observeCurrentUser(completion: @escaping (User) -> Void) {
    guard let currentUser = Auth.auth().currentUser else {
        return
    }
    REF_USERS.child(currentUser.uid).observeSingleEvent(of: .value, with: {
        snapshot in
        if let dict = snapshot.value as? [String: Any] {
            let user = User.transformUser(dict: dict, key: snapshot.key)
            print("user::::::\(user)")
            completion(user)
        }
    })

    }

I tried to migrate from firebase to firestore. While running in console output it shows document does not exists. Here is code i used

  func observeCurrentUser(completion: @escaping (User) -> Void) {
    guard let currentUser = Auth.auth().currentUser else {
        return
    }

   if let userId = Auth.auth().currentUser?.uid {
      db.collection("users").document(currentUser.uid)               
          .addSnapshotListener { (snapshot, error ) in

               if let document = snapshot {

               let user = User.transformUser(dict: document.data()!, key: document.documentID)
               completion(user)         

                } else {

                 print("Document does not exist")

               }

    }

Its already done firebase, I want in cloud firestore?

Any help much appreciated pls.

Upvotes: 1

Views: 4209

Answers (1)

ChrisEenberg
ChrisEenberg

Reputation: 783

As the documentation says you can query data by using:

    db.collection("cities").document("SF").getDocument { (document, error) in
        if let document = document, document.exists {
           //access data here
        } else {
            print("Document does not exist")
        }
    }

That means, in your case use:

       db.collection("users").document(currentUser.uid)               
          .getDocument { (snapshot, error ) in

               if let document = snapshot {

               let user = User.transformUser(dict: document.data()!, key: document.documentID)
               completion(user)         

                } else {

                 print("Document does not exist")

               }
       }

Let me know how it works out, and I can update my answer with whatever issue might come up.

Kind regards Chris

Upvotes: 4

Related Questions