每次在Firebase中

时间:2019-12-20 07:32:08

标签: swift firebase google-cloud-firestore

我是Firebase的新手,在主视图上使用gmail唱歌。用户唱歌后,我将基于documentId保存 userinfo ,如果用户已经存在(已经用gmail登录),则无需保存信息,只需更新存在的信息即可。因此,我尝试了一些代码,但没有达到我的期望。

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {

        if let error = error{
            print(error.localizedDescription)
            return
        }
        guard let authentication = user.authentication else { return }

        let credential = GoogleAuthProvider.credential(withIDToken: (authentication.idToken)!, accessToken: (authentication.accessToken)!)
        Auth.auth().signIn(with: credential, completion: { (user, error) in
            if let error = error {
                print("Login erro  \(error.localizedDescription)")
                return
            }

在这里,我检查了Firestore中的所有文档ID

            self.db.collection("pruser").getDocuments() { (querySnapshot, err) in
                       if let err = err {
                           print("Error getting documents: \(err)")
                       } else {
                           for document in querySnapshot!.documents {
//                               print("\(document.documentID) => \(document.data())")
                            print("\(document.documentID)")

在这里,我必须检查现有的文档ID和当前用户 文件编号。如果已经存在更新信息,则如果未设置文档ID上的值,但是尝试使用此代码时

            self.ref = self.db.collection("pruser").document()
            let doc = self.ref?.documentID
            print("printdoucment id ",doc!)
                        }
                       }
                   }
}
  

用户ID:vnRsxNjJePfwRcAWOLy1iByhV352
文件ID:PKKLapD9xE9kNNvntI8X

     

userId:vnRsxNjJePfwRcAWOLy1iByhV352
文件ID:   pxjiVXEgbZgFke3Mijk5

当我用现有电子邮件登录时, documentid 也有所不同,每次登录时间 DocumentId 都不同,如何实现此问题? enter image description here

2 个答案:

答案 0 :(得分:1)

没有参数的

aergistal's answer每次调用都会生成一个新的文档ID。如果需要的话,必须给它传递一个参数以指定文档ID。

ffmpeg

答案 1 :(得分:0)

尝试将其添加到viewDidLoad():

GIDSignIn.sharedInstance()?.presentingViewController    = self
GIDSignIn.sharedInstance()?.delegate = self

将7-11行替换为:

Auth.auth().signIn(with: credentials) {
            (authResult, error) in
            if let error = error {
                print(error.localizedDescription)
            }else{
                print("Log in successful")

这应该登录用户。

对于DocumentID,我认为您的代码中没有将每个用户链接到每个DocumentID。您需要根据用户ID更改或读取DocumentID。