使用带有swift 4.0的Firestore DB,每次进行身份验证时,保存到数据库都会创建一个随机字符文档

问题描述 投票:0回答:2

我正在swift 4.0中创建一个iPhone应用程序。我正在连接到目前正在运行的Firestore。我遇到的问题是每次用户通过身份验证时都会创建一个随机字符文档。我想更改此名称,以便电子邮件地址是数据库中的注册文档,因此下次使用相同的凭据登录时,它会使用相同的文档。

let databaseRef = Database.database().reference(fromURL: “*****************”)
let storage = Storage.storage().reference()
let db = Firestore.firestore()
var ref: DocumentReference? = nil
var handle: AuthStateDidChangeListenerHandle?
var checkBtnTitle:Bool = true


    override func viewDidLoad() {
    super.viewDidLoad()
        if Auth.auth().currentUser != nil {
            let currentUser = Auth.auth().currentUser
            btnLogOut.title = "LogOut"
            btnLogin.title = "Login"
            var ref: DocumentReference? = nil
            ref = db.collection("Solicitor").addDocument(data: [
                "userID": currentUser?.email! as Any,
                "Name": currentUser?.displayName as Any
            ]) { err in
                if let err = err {
                    print("Error adding document: \(err)")
                } else {
                    print("Document added with ID: \(ref!.documentID)")
                }
            }
        } else {
            btnLogOut.title = "Login"
            btnLogin.title = ""
        }

      // google signin
       GIDSignIn.sharedInstance()?.uiDelegate = self

ios swift iphone google-cloud-firestore
2个回答
1
投票

当您调用addDocument()时,Firestore会创建一个包含自动生成ID的新文档。如果要控制文档的ID,则应使用document()setData()方法。例如:

ref = db.collection("Solicitor").document(currentUser?.email!).setDate(data: [
    "userID": currentUser?.email! as Any,
    "Name": currentUser?.displayName as Any
])

有关更多信息,请参阅Firebase documentation on adding documents


0
投票

感谢您对此的帮助。我终于得到了保存...我不需要DB中的'ref ='部分。

 let currentUser = Auth.auth().currentUser
 let businessEmail = Auth.auth().currentUser?.email!
 db.collection("Solicitor").document(businessEmail!).setData([

另外,我还会获得自动生成的ID以及用户的文档ID(电子邮件地址)。有没有人对如何阻止这种行为有任何建议?

© www.soinside.com 2019 - 2024. All rights reserved.