Swift 在firebase数据库中搜索数据

Swift 在firebase数据库中搜索数据,swift,firebase,firebase-realtime-database,Swift,Firebase,Firebase Realtime Database,因此,我试图查看数据库中是否存在当前用户id,并希望返回bool值,返回数据为“Any”值,用户常量为字符串。我在“if”“类型为'Any'的值没有成员'contains'时出错” 我从数据库中得到这个值 "-LBe5petr8MUtVZd9qWw" = { uid = zQRxvM3cwzQMewUtVamk8JQrEFJ3; }; }) 只需搜索Posts/User/uid,如果快照为空,则用户不存在只需搜索Posts/User/uid,如果快照为空,则用户不存在如

因此,我试图查看数据库中是否存在当前用户id,并希望返回bool值,返回数据为“Any”值,用户常量为字符串。我在“if”“类型为'Any'的值没有成员'contains'时出错”

我从数据库中得到这个值

"-LBe5petr8MUtVZd9qWw" = {
        uid = zQRxvM3cwzQMewUtVamk8JQrEFJ3;
    };
})

只需搜索Posts/User/uid,如果快照为空,则用户不存在

只需搜索Posts/User/uid,如果快照为空,则用户不存在

如果返回快照,则uid必须存在。您可以声明一个
布尔值
,如果返回数据,它将更新。如果需要uid,则需要如下解析它:

var userDoesExist:Bool=false

    .observeSingleEvent(of: .value, with: { (snapshot) in               
        if let dict = snapshot.value as? [String : Any] {
            let userId = dict["uid"] as? String ?? ""
            print("Found uid: \(userId)")
            self.userDoesExist = true
        }
    })

如果恢复快照,则uid必须存在。您可以声明一个
布尔值
,如果返回数据,它将更新。如果需要uid,则需要如下解析它:

var userDoesExist:Bool=false

    .observeSingleEvent(of: .value, with: { (snapshot) in               
        if let dict = snapshot.value as? [String : Any] {
            let userId = dict["uid"] as? String ?? ""
            print("Found uid: \(userId)")
            self.userDoesExist = true
        }
    })
正确的查询是

databaseRef.child("Posts").queryOrdered(byChild: "uid").queryEqual(toValue: "yourUserId")
只需在完成块中检查snapshot.exists()。

正确的查询是

databaseRef.child("Posts").queryOrdered(byChild: "uid").queryEqual(toValue: "yourUserId")

只需在完成块中检查
if snapshot.exists()

正确的查询是
databaseRef.child(“Posts”).queryOrdered(byChild:“uid”).queryEqual(toValue:“yourUserId”)
,只需在完成块中检查
if snapshot.exists()
。这确实是正确的方法@TheTiger。你能把它写在一个答案里,这样我们就可以投票,OP就可以接受它了吗?谢谢@Frank!我将其作为答案发布。正确的查询是
databaseRef.child(“Posts”).queryOrdered(byChild:“uid”).queryEqual(toValue:“yourUserId”)
,只需在完成块中检查
snapshot.exists()
。这确实是正确的方法@TheTiger。你能把它写在一个答案里,这样我们就可以投票,OP就可以接受它了吗?谢谢@Frank!我把它贴出来作为答复。