2017-08-05 54 views
0

我目前試圖遍歷firebase中的所有用戶電子郵件,但是,每當我運行我的代碼並嘗試添加「[email protected]」用戶時,都會出現錯誤。但是,當我嘗試添加當前用戶的電子郵件地址「[email protected]」時,則會取得成功。通過Firebase中的電子郵件進行迭代 - Swift

下面是我的代碼演示這個片段。 B 下面還是一張顯示我當前數據庫結構的圖片。 請注意,每個用戶的電子郵件都位於數據庫「用戶」部分下的唯一用戶標識下。

通過電子郵件代碼段進行迭代。

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

你爲什麼不試試這個,可能會變成是頭痛少得多..: -

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安全規則允許它......所以您可能需要在控制檯上工作......祝您好運!

+0

這工作!好的解決方案比我想要的更容易,寫得更好。 –