Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 斯威夫特+火力基地。访问当前用户的文档_Swift_Firebase_Google Cloud Firestore_Swiftui - Fatal编程技术网

Swift 斯威夫特+火力基地。访问当前用户的文档

Swift 斯威夫特+火力基地。访问当前用户的文档,swift,firebase,google-cloud-firestore,swiftui,Swift,Firebase,Google Cloud Firestore,Swiftui,我当前的firebase结构是用户的集合,然后有一个习惯的子集合。对于给定的用户,我希望他们能够添加到自己的例程集合中。但是,遇到了一个问题。当我运行下面的函数时,它只是用一个单独的例程创建一个单独的用户。如何将新例程绑定到当前经过身份验证的用户 func addData(routineMsg: String){ let db = Firestore.firestore() let user = db.collection("users").document()

我当前的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
          }
      }
  }
现在,代码显示了我是如何将它硬编码到某个文档gzhahq1p0uxgdlywf8p的,但是我希望能够根据用户动态地确定该文档

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

请编辑此问题,以便更清楚地了解哪些问题没有按您期望的方式工作。具体说明您观察到的内容以及这些内容与您想要的内容之间的差异。firebase用户id与您其中一个集合中的任何文档id都是独立的。通常,人们倾向于以耦合的方式使用它,因此,如果您确实要在用户集合中为每个firebase用户创建一个具有匹配文档和firebase用户id的文档,那么您只需获取代码和当前登录firebase用户的id即可。或者您正在询问如何检索当前登录的firebase用户?非常感谢!这正是我需要的。你是最棒的+1