2017-03-22 44 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) 
} 

(请原谅我的残暴斯威夫特语法,这不是我说还没有一种语言)