Firestoreにデータを作成する方法

今回は、Cloud Firestoreと呼ばれるデータベース機能にデータを作成する方法について解説していきたいと思います。

前回はFirebaseAuthでAppleログインする方法について解説しましたが、今回ではログイン後にデータベースにユーザー情報を書き込んでいきます。

Firebase Firestoreとは

そもそもFirestoreを知らない方に簡単に説明します。

Firebase Firestoreとは、Googleが提供しているインフラツール「Firebase」のサービスのなかの一つです。

NoSQLと呼ばれるデータベースで、従来のデータベースの設計手法を変えることによって大容量、低レイテンシー、柔軟なモデルを実現したものです。

PodfileでFirestoreを導入してみる

さて、まずはfirestoreを自身のアプリ開発に導入していきましょう。

ここでは、前回の解説と同様にpodfileからインストールしていきます。

// podfile
pod 'Firebase/Core'
pod 'Firebase/Firestore'

// terminal
pod install

Databaseにアクセスしてみる

自身のアプリのコンソールを開き、firestoreを選択。

「はじめる」をおして開始しましょう。

ログイン - Google アカウント

Databaseにアクセスするには使用したいファイルに以下を追記します。

import FirebaseAuth
import FirebaseFirestore  //Database

let DB_BASE = Firestore.firestore()

DBの構成

DBの構成はこんなかたちになっています。

データの集合体がドキュメント、ドキュメントの集合体がコレクションということですね!

ドキュメントを作成する

先程firestoreを導入したファイルで、ユーザ情報を作成していきます。

import Foundation
import Firebase
import FirebaseFirestore

let DB_BASE = Firestore.firestore()

class AuthService{

    private var REF_USERS = DB_BASE.collection("users")  // usersコレクション
    
    func createNewUserInDatabase(name: String, email: String, provider: String, providerID: String, profileImage: UIImage, handler: @escaping (_ userID: String?)->()) {
        
        // set up a user Document
        let document = REF_USERS.document()
        let userID = document.documentID //自動で作成される
                
        // Upload profile data
        let userData: [String: Any] = [
            DatabaseUserField.displayName: name,
            DatabaseUserField.email : email,
            DatabaseUserField.providerID : providerID,
            DatabaseUserField.provider : provider,
            DatabaseUserField.userID : userID,
            DatabaseUserField.bio : "",
            DatabaseUserField.dataCreated : FieldValue.serverTimestamp()
        ]
        
        document.setData(userData) {(error) in
            //error
            if let error = error {
                print("Error uploading data to user document. \(error)")
                handler(nil)
            } else {
                //success
                handler(userID)
            }
        }
    }

解説していきます。

まず、private var REF_USERS = DB_BASE.collection("users") でusersというコレクションを作成しました。

そのあと、createNewUserInDatabase でドキュメントを保存する処理をしていきます。

documentというインスタンスを作成し、setData() で保存したいデータを入れてあげることで、その時点でfireStoreにデータを格納する処理が行われます。

このようなかたちで簡単にデータが保存されるわけですね!

以上です。

今度はデータを引っ張ってきたり更新する処理などもおいおい解説していきたいと思います。

コメント

タイトルとURLをコピーしました