今回は、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を選択。
「はじめる」をおして開始しましょう。
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にデータを格納する処理が行われます。
このようなかたちで簡単にデータが保存されるわけですね!
以上です。
今度はデータを引っ張ってきたり更新する処理などもおいおい解説していきたいと思います。
コメント