如何在Firebase中获取用户特定数据Swift 3
问题描述:
我想检索应用程序中当前用户的数据。我怎样才能做到这一点。 ?
如何在Firebase中获取用户特定数据Swift 3
这里是我当前用户的火力ID:
而我的表节点是:
这清楚地表明我的uid
和节点标题是不同的。那么如何获取特定用户的数据?
我的代码至今:
self.ref = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
self.ref.child("member").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
if !snapshot.exists() {
// handle data not found
return
}
})
答
你得到不同的ID,因为第一个Wnlxl...
是userID
和其他-KVvR664...
是autoID
。
您在member
之后设置了.childByAutoID
,如果您想要检索当前用户的数据,则必须将userID
放在member
之后。
然后,您可以通过userID
轻松检索用户的数据,因为每个细节都将保存在userID
下。
希望这段代码能为你工作。
let ref : FIRDatabaseReference!
ref = FIRDatabase.database().reference()
ref.child("member").child(user!.uid).setValue(["name": self.fullName.text!, "email": self.email.text!, "mobile": self.mobile.text!, "doj": self.doj.text!])
答
你的火力地堡截图不正确,我想 - 你的代码将正常工作,但你如何创建这些成员是错误的。
创建成员时,您应该使用.childByAutoID
Auth.auth().currentUser?.uid
。如果这是有道理的。让我知道。
编辑:在节点成员创建具有userUID数据的用户做到以下几点:
if let userUID = Auth().auth.currentUser?.uid{
ref.child("members/\(userUID)").setValue(*YOURMEMBERINFODICTIONARY*)
}
我不想设定值,但获取当前用户 – vickydutta
您已设置'的细节.childByAutoID'在'member'后面,如果你想在'UserID'下保存细节,那么你必须在'member'后面加上'userID'。 –
@vickydutta更新了答案 –