[英]Firebase, get immediate parent of a child with specific value
我正在使用firebase后端的ios應用程序。 當用戶注冊時,用戶節點在firebase中創建,其中有不同的孩子,如電子郵件,姓名,頭像等。我正在做的是我在用戶節點中搜索一些電子郵件,如果我在某個節點中找到該電子郵件,我想得到它的父鍵,即-Ksdd23d2djhsdgjhs。 看圖像:
如果電子郵件與我的電子郵件匹配,我想用上箭頭獲取值。
我有一個電子郵件地址,我正在搜索用戶節點中的所有孩子,然后在里面進一步檢查以比較電子郵件和我的電子郵件。 如果電子郵件匹配,我想得到它的父節點,如圖像中的Dn2LUAwdolg .....。
我可以在用戶節點下獲得第一個節點。 假設圖片中顯示的節點Dn2LU ..處於某個未知位置,並且如果它的電子郵件子值與我正在比較它的那個匹配,我必須搜索所有用戶以獲取其名稱。
希望現在很清楚
我認為您所尋找的內容已在此處記錄: https : //firebase.google.com/docs/reference/js/firebase.database.Reference#equalTo
我不是IOS開發人員,但我這是一個JS示例:
// Find all users which match the child node email.
var ref = firebase.database().ref('user');
ref.orderByChild('email').equalTo('wal@aol.com').on("value", function(snapshot) {
snapshot.forEach((function(child) { console.log(child.key) });
});
快照包含整個節點,但snapshot.key將返回節點密鑰(在您的示例中:Dn2LUAwdolg ...)
您可以使用.ref
從快照中獲取引用,然后使用.parent
在子引用上獲取引用的父級,然后使用.key
來獲取該引用的鍵,該鍵將是示例中的父鍵: Dn2LUAwdolgf6HCn11UiSihejty1
所以我們舉例說明了avata的快照
snapshot.ref.parent.key
在你的情況下,這將是相同的
Dn2LUAwdolgf6HCn11UiSihejty1
我正在回答我的問題,但我會贊成@André的回答,這有助於我實現我想要的目標。 我在這里發布了我編寫的Swift 3.0代碼,同時考慮了André的代碼。
let idtosearch = email
let ref = Database.database().reference().child("user")
ref.queryOrdered(byChild: "email").queryEqual(toValue: idtosearch).observeSingleEvent(of: .childAdded, with: { (snapshot) in
print("\(snapshot.key)")
})
在我的情況下,我有其他UID在UID下需要加載我的友誼列表:
為此,我創建了這個方法
class func downloadAllFriendList(UserID:String, completion: @escaping (UserSimplifiedCredentials?) -> Swift.Void) {
var ref = Database.database().reference().child("Friendship").child(UserID).observe(.childAdded, with: { (snapshot) in
print("the child parent id is +++++++> \(snapshot.key)")
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.