【发布时间】:2021-12-28 16:11:25
【问题描述】:
我开始研究 iOS 开发几个星期,在创建我的第一个应用程序时,我必须解决实施“用户授权”的问题
出于这些目的,我选择了 Firebase
然后出现了这样一个问题,因为在注册用户时,我保存了他的电子邮件并登录到数据库,并且有必要设置一个方法,当您单击“注册”按钮时,将检查这样的email和login不在数据库中,然后才继续。
研究了 Firebase 文档并观看了有关该服务的一些视频,我尝试通过以下方式解决此问题:
private func isNewEmail(_ email: String, completion: _ emailIsNew: Bool -> ()) {
ref = Database.database().reference(withPath: "users")
ref.getData { error, snapshot in
var emailIsNew: Bool = true
guard error == nil else { return }
guard let snapshotValue = snapshot.value as? [String : AnyObject] else {
if snapshot.value as? [String : AnyObject] == nil {
completion(emailIsNew)
return
}
return
}
for item in snapshotValue {
let itemValueDictionary = item.value
guard let emailFromDatabase = itemValueDictionary["email"] as? String else { return }
if email.lowercased() == emailFromDatabase.lowercased() {
emailIsNew = false
break
}
}
completion(emailIsNew)
}
}
接下来,我们调用上述方法,并在那里传递电子邮件,根据 emailIsNew 的值,我们要么创建用户,要么不创建用户。
最重要的问题:我假设如果我们的数据库中有 10,000 个用户,那么这样的检查可能需要很长时间,在我看来,当一个人单击“注册”,然后等待 10 分钟让应用程序检查所有内容 - 这是不可接受的,所以我试图找到另一种方法来解决原始问题,但不幸的是,我找不到它,因为我想,少量的经验。我请您建议如何解决这个问题,如何更改验证方法,或者一般来说,也许应用其他方法。
MARK - 我在 stackoverflow 上研究了类似的答案,但其中大多数都与 android 或 Java 相关,或者我无法应用这些解决方案来解决我的问题。 因为我只学习英语,所以也许这就是我找不到答案的原因,但我仍然希望收到关于我的方法的评论,以及类似问题的链接。感谢您的理解。
【问题讨论】:
标签: swift firebase firebase-realtime-database