通过Firebase - Swift中的电子邮件进行迭代

时间:2017-08-05 07:05:56

标签: swift firebase

我目前正在尝试迭代firebase中的所有用户电子邮件,但是,每当我运行我的代码,并尝试添加" test@gmail.com"用户,有一个错误。但是,当我尝试添加当前用户的电子邮件地址时," test1@gmail.com" ;,就会成功。

以下是我的代码片段,展示了这一点。乙 下面的图片显示了我当前数据库的结构。 请注意,每个用户的电子邮件都位于"用户"下的唯一用户ID下。数据库的一部分。

通过电子邮件片段进行迭代。

func searchEmails() {
        var ref : DatabaseReference
        let currentUserID = Auth.auth().currentUser?.uid
        ref = Database.database().reference()




        let userRef = ref.child("users")
        userRef.observeSingleEvent(of: .value, with: { snapshot in
            let enumerator = snapshot.children
            while let rest = enumerator.nextObject() as? DataSnapshot {

                userRef.child(rest.key).child("email").observe(.value, with: { snapshot in

                    print(snapshot.value!)

//                    print("Other rest is this \(otherRest.value!) value")

                    if(snapshot.value as? String == self.shareEmail.text) {
                        SVProgressHUD.showSuccess(withStatus: "Request sent to user!")
                    }
                    else {
                        SVProgressHUD.showError(withStatus: "Email not valid.")

                    }

                })
            }
        })

        SVProgressHUD.dismiss()
    }

Firebase Database structure

1 个答案:

答案 0 :(得分:1)

你为什么不尝试这个,可能会变得更少头痛......: -

if self.shareEmail.text != "" && self.shareEmail.text.isEmpty == false{

        Database.database().reference().child("users").queryOrdered(byChild: "email").queryEqual(toValue: "somemail").observe(.value, with: {(Snapshot) in

            if Snapshot.exists(){

                // The email that you have been searching for exists in the 
                // database under some particular userID node which can 
                // be retrieved from ....

                print(Snapshot)


            }else{

                // No such email found


            }


        }, withCancel: {(error) in

            // Handle any error occurred while making the call to firebase

        })


    }else{

        //Your textfield must not be empty;.... Handle that error

    }

注意 :只有在 Firebase安全规则允许的情况下才能使用...所以您可能需要在控制台...祝你好运!