如何检查快照中是否包含Firebase中的特定值?

时间:2017-08-02 14:15:47

标签: ios swift firebase

当我运行此代码时,我收到一条错误消息:

由于未捕获的异常终止应用' 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")
                    }


                })

2 个答案:

答案 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。