2017-03-22 66 views
1

我有一個帖子節點,它包含我的FB數據庫中的各個帖子。這些帖子每個都有一個users_liked的數組,其中有一個隨機生成的密鑰,值爲當前用戶uid。我的問題是,我希望能夠檢查數值(uid)是否已經存在於這個數組中,如果有的話,做一些事情;否則做別的事Swift 3 + Firebase:檢查數組內的值是否存在?

我該如何做到這一點?下面是我的JSON樹。謝謝。 enter image description here

+0

火力地堡沒有檢查一個特定的值存在的能力。如果你需要這個,通常意味着你應該反轉'users_liked'並使用UID作爲鍵。請參閱https://youtu.be/66lDSYtyils?t=6m17s和http://stackoverflow.com/questions/39149216/firebase-security-rules-to-check-unique-value-of-a-child-askfirebase –

回答

0

我爲你寫了一段代碼,然後我意識到你想要Swift,並且使用Java:S無論如何,概念大綱應該足夠了。將Firebase數據庫引用創建爲「users_liked」節點,並將單個事件值偵聽器設置爲此引用。接下來,將datasnapshot傳遞給一個「foreach」循環快速等價物,爲datasnapshot(datasnapshot.getChildren())的每個子節點創建一個新的datasnapshot,即「dsChild」。最後通過執行dsChild.getValue檢查每個項目並利用equalTo()檢查值是否存在。希望這會有所幫助,對不起,我無法用Swift寫出來!

1

只需請求該路徑的快照並使用.exists()

var postid = "-KGNY..." 
var uid = FIRAuth.auth()?.currentUser?.uid 
var ref = FIRDatabase.database().reference() 

ref.child("posts").child(postid).child("users_liked").child(uid!) 
    .observeSingleEvent(of: .value, with: { (snapshot) in 
    // Get user value 
    if snapshot.exists() == true { 
    print("exists") 
    } 
    else { 
    print("does not exist") 
    } 
}) { (error) in 
    print(error.localizedDescription) 
} 

(請原諒我的殘暴斯威夫特語法,這不是我說還沒有一種語言)