【问题标题】:how to get current user document in firestore swift如何在firestore swift中获取当前用户文档
【发布时间】:2018-11-09 08:34:13
【问题描述】:

当用户登录成功后,它会进入主屏幕。当用户点击用户图标按钮时,将进入用户帐户详细信息页面。在这里,我已经在 firebase 中从数据库中检索数据。

这里是使用的代码:

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)
        }
    })

    }

我尝试从 firebase 迁移到 firestore。在控制台输出中运行时,它显示文档不存在。这是我使用的代码

  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")

               }

    }

它已经完成了firebase,我想要在云firestore中吗?

非常感谢任何帮助。

【问题讨论】:

  • 请格式化你的第二个代码块,它很难阅读。
  • @ChrisEenberg 嘿,你现在可以检查一下吗,我已经更新了
  • error的值是多少?

标签: ios firebase swift3 google-cloud-firestore


【解决方案1】:

正如documentation 所说,您可以使用以下方法查询数据:

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

这意味着,在你的情况下使用:

       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")

               }
       }

让我知道结果如何,我可以根据可能出现的任何问题更新我的答案。

克里斯的问候

【讨论】:

  • 我已经尝试过这段代码,在控制台打印文档不存在
  • 是否打印了 currentUser.uid 和快照? - 也许尝试调试,看看实际设置了哪些变量
  • 嘿,我只是想将 firebase 转换为 firestore instagram clone github.com/zero2launch/z2l-ios-social-network 请你帮我解决这个问题,过去两天都在苦苦挣扎
  • 您确定该用户确实存在于数据库中吗? - 我不得不问:)
  • @PvDev 你明白了吗?
猜你喜欢
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 2020-03-03
  • 2022-11-15
  • 2020-01-11
  • 2021-04-25
  • 1970-01-01
相关资源
最近更新 更多