斯威夫特 + Firebase。访问当前用户的文档

Posted

技术标签:

【中文标题】斯威夫特 + Firebase。访问当前用户的文档【英文标题】:Swift + Firebase. Accessing current user's document 【发布时间】:2020-06-08 19:23:15 【问题描述】:

我当前的 firebase 结构是用户集合,然后有一个习惯子集合。对于给定的用户,我希望他们能够添加到他们自己的例程集合中。但是,遇到一个问题。当我运行下面的函数时,它只是创建一个具有单独例程的单独用户。我如何将新例程绑定到当前经过身份验证的用户?

func addData(routineMsg: String)        
    let db = Firestore.firestore()
    let user = db.collection("users").document()
    let routine = db.collection("users").document("GzsHAHq1P0uXGdlYwF8P").collection("routines").document()
            routine.setData(["id": routine.documentID, "routine": routineMsg])  err in
          if err != nil 
              print((err?.localizedDescription)!)
              return
          
      
  

现在,代码显示了我如何将其硬编码到某个文档 (GzsHAHq1P0uXGdlYwF8P),但希望能够由用户动态确定文档

【问题讨论】:

请编辑问题,以更清楚地了解哪些方面没有按您预期的方式工作。具体说明您观察到的内容以及与您想要的内容有何不同。 firebase 用户 ID 与您的某个集合中的任何文档 ID 是分开的。人们通常倾向于以耦合的方式使用它,因此,如果您确实在“用户”集合中为每个具有匹配文档和 Firebase 用户 ID 的 Firebase 用户创建一个文档,那么您可以只使用您的代码和您当前登录的 firebase 用户的 ID。还是您在问如何检索当前登录的 firebase 用户? 【参考方案1】:
let user = db.collection("users").document()

通过不传递 document() 参数,您所做的是使用自动生成的文档 ID 创建一个新的文档引用。您想要做的是传递带有定位用户文档的字符串的方法。理想情况下,这将是用户的 ID:

guard let uid = Auth.auth().currentUser?.uid else 
    return

let userDocRef = db.collection("users").document(uid)

从那里,要在子集合中生成随机文档 ID,请执行您之前所做的操作:

func addData(routineMsg: String) 
    guard let uid = Auth.auth().currentUser?.uid else 
        return
    
    let db = Firestore.firestore()
    let userDocRef = db.collection("users").document(uid)
    let routineDocRef = userDocRef.collection("routines").document()

    routineDocRef.setData([
        "id": routineDocRef.documentID,
        "routine": routineMsg
    ])  error in
        if let error = error 
            print(error)
        
    

【讨论】:

非常感谢!这正是我所需要的。你是最棒的 +1

以上是关于斯威夫特 + Firebase。访问当前用户的文档的主要内容,如果未能解决你的问题,请参考以下文章

CoreLocation 斯威夫特

如何在 Flutter 中从 Firebase 获取当前用户 ID

在 Swift 和 ios 14 中访问 Firebase Firestore 文档的字段?

如何使用VueJs和Firebase访问用户数据库

Firebase 在创建新用户时注销当前用户

如何在 Swift 的 Firebase Firestore 中获取当前文档 ID?