Swift 斯威夫特+火力基地。访问当前用户的文档
我当前的firebase结构是用户的集合,然后有一个习惯的子集合。对于给定的用户,我希望他们能够添加到自己的例程集合中。但是,遇到了一个问题。当我运行下面的函数时,它只是用一个单独的例程创建一个单独的用户。如何将新例程绑定到当前经过身份验证的用户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()
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