当我运行此代码时,我收到一条错误消息:
由于未捕获的异常终止应用' InvalidPathValidation',原因:'(hasChild :)必须是非空字符串且不包含'。' '#' ' $' ' ['或']''
我的问题是如何检查我的快照是否包含值 user.email?
self.databaseRef.child("Test").child("xxx").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild((user!.email)!){
print("yess")
}else{
print("Not in db")
}
})
答案 0 :(得分:1)
您在文字中指明了问题。电子邮件始终包含一个点'。 键中不允许这样做。您检查密钥是否包含电子邮件,但这是不允许的。像这样构建数据库:
"email": theemail
这样,密钥就是"电子邮件" ,值就是 theemail 。在值中,允许每个字符串。
self.databaseRef.child("Test").child("xxx").observeSingleEvent(of: .value, with: { (snapshot) in
let values = snapshot.value as? NSDictionary
let email = values?["email"] as? String ?? "No email found"
// OR
if let email = values?["email"] as? String{
//email (above declared variable) holds the value (the real email)
}else{
//no email
}
if email == (user!.email)!{
}else{
}
})
答案 1 :(得分:0)
如果有效,请告诉我。它会检查电子邮件字段是否确实存在。我认为您收到错误是因为您正在检查实际用户的电子邮件。
self.databaseRef.child("Test").child("xxx").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild("email"){
print("yess")
}else{
print("Not in db")
}
})
如果指定的子路径具有(非空)数据,则 hasChild
返回true。