FirebaseAuthとFirestoreをuidで繋げる


前回の『FirebseAuthでアカウントを作成するコード』からEmailとPasswordを使ってアカウントを作成していきました。この情報をFirestoreに繋げていきたいと思います。

コードはこんな感じ

ViewController.swift
    //前回の記事を参考にしてください→https://qiita.com/agachan0930/items/08e7f8412dbd32323ef7
    private func createUserToFireAuth(){
        guard let email = emailTextField.text else {return}
        guard let password = passwordTextField.text else {return}

        Auth.auth().createUser(withEmail: email, password: password){(auth, err) in
            if let err = err{
                print("You cannot create New Tinder Account", err)
                return
            }
            guard let uid = auth?.user.uid else {return}
            //新しく追加したのはここで下のsetUserDataToFirestoreの関数と接続されています。
            self.setUserDataToFirestore(email:email, uid: uid)
        }
    }

    //MARK:Create&ConnectFromFirebaseAuthToFirestore
    private func setUserDataToFirestore(email:String, uid: String){
        guard let name = nameTextField.text else {return}
        let document = [
            "name": name,
            "email": email,
            "createAt": Timestamp()
        ] as [String: Any]


        Firestore.firestore().collection("users").document(uid).setData(document){ err in
            if let err = err{
                print("You cannot save your account in FireStore", err)
                return
            }

            print("You success & save your account uid in FireStore")
        }
    }

コード解説

Emailの情報とuidの情報をsetUserDataToFirestoreの関数に引き渡す。ここでの返り値はなし。

createUserToFireAuth内
self.setUserDataToFirestore(email:email, uid: uid)

createUserToFireAuthからEmailとuidをString型で受け渡しをする。

    //MARK:Create&ConnectFromFirebaseAuthToFirestore
    private func setUserDataToFirestore(email:String, uid: String){
    //省略
    }

辞書型[String:Any]で名前とEmail及び登録した時刻を型に準じてdocumentに格納する。

        let document = [
            "name": name,
            "email": email,
            "createAt": Timestamp()
        ] as [String: Any]

FireStore.firestoreでFirebase全体のデータベースを呼び出す。そのデータベース内の名前(users)に接続をする。
.documentで階層のリストを検索。
.setData(document)で先ほどセットしたデータ(document)を中に埋めこむ。
そしてif関数を用いて登録ができたかどうかを判定する。

        Firestore.firestore().collection("users").document(uid).setData(document){ err in
            if let err = err{
                print("You cannot save your account in FireStore", err)
                return
            }

            print("You success & save your account uid in FireStore")
        }

次回

モデルの作成を行う