简体   繁体   English

如何在Firestore Swift中获取当前用户文档

[英]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. 在这里,我已经在firebase中从数据库检索数据。

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. 我试图从Firebase迁移到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? 它已经做过Firebase,我想在Cloud Firestore中吗?

Any help much appreciated pls. 任何帮助,不胜感激请。

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 亲切的问候克里斯

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM