代码之家  ›  专栏  ›  技术社区  ›  PvDev

如何在firestore swift中获取当前用户文档

  •  0
  • PvDev  · 技术社区  · 6 年前

    当用户成功登录时,将进入主屏幕。当用户点击用户图标按钮时,将进入用户帐户详细信息页面。这里我已经在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")
    
                   }
    
        }
    

    已经做好的火库,我要在云火库吗?

    谢谢你的帮助。

    1 回复  |  直到 6 年前
        1
  •  2
  •   ChrisEenberg    6 年前

    作为 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")
    
                   }
           }
    

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

    问候克里斯