Swift 在firebase数据库中搜索数据
因此,我试图查看数据库中是否存在当前用户id,并希望返回bool值,返回数据为“Any”值,用户常量为字符串。我在“if”“类型为'Any'的值没有成员'contains'时出错” 我从数据库中得到这个值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,如果快照为空,则用户不存在如
"-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!我把它贴出来作为答复。