我目前正在尝试迭代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()
}
答案 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安全规则允许的情况下才能使用...所以您可能需要在控制台...祝你好运!