簡體   English   中英

Firebase,獲得具有特定價值的孩子的直接父母

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM