【问题标题】:Select a user from Firestore从 Firestore 中选择用户
【发布时间】:2018-07-04 21:53:18
【问题描述】:

我无法解决问题:在 Firestore 中有一个用户集合,其中有几个带有字段的文档(电子邮件:“String”,名称:“String”,密码:“String”)。在 textField 中输入电子邮件和密码,有必要编写一个函数,从输入的数据中选择 Firestore 中的特定用户。函数入口Login():

func entranceLogin() {
    guard let email = emailTextField.text, let password = passwordTextField.text else{
        print("Form is not valid")
        return
    }

    let values1 = [email]
    let values2 = [password]
    var db = Firestore.firestore()
    db.collection("users").getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in querySnapshot!.documents {
                db = document.value(forKey: "email = '\(values1)' && password = '\(values2)'") as! Firestore
                    print("\(db) => \(document.data())")
            }

             // self.dismiss(animated: true, completion: nil)
            }
        }
    }

【问题讨论】:

  • 那么会发生什么?预期和实际发生了什么?

标签: ios swift firebase google-cloud-firestore


【解决方案1】:

以您的方式将密码存储在数据库中是非常不安全的。 Firebase 已经为您提供了登录功能

Auth.auth().signIn(withEmail: email, password: password) { (user, error) in 
//.....
}

然后在您的数据库中,而不是保存密码,只需保存每个用户的用户 UID。然后您可以使用以下方法获取用户:

guard let uid = Auth.auth().currentUser.uid else { return }
Firestore.firestore().collection("users").whereField("userID", isEqualTo: uid).getDocuments() { snapshot, error in 
// Do user fetching here
}

【讨论】:

    猜你喜欢
    • 2019-10-10
    • 2021-10-17
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2012-03-23
    相关资源
    最近更新 更多