Firebase Cloud Firestore の関連データは Reference を使う
はじめに
Firebase Cloud Firestore の関連データを扱う場合は Reference型 を使いましょう。
Reference型とは FirestoreのCollectionReference・DocumentReferenceのことで、以下のドキュメントの「Cloud Firestore の参照」のことです。
関連データを保存する
Reference型はリレーションシップ(関連)データを保存する際に使用すると便利です。
関連付けることで、1: N , 1:1 に対するデータを保存することができます。
どんな時に使えるのか
例えば、チャットを実装する場合に「トーク一覧画面」「トーク画面」という2つを作るとします。(LINEやFacebookMessagerを想像してもらえるといいと思います)
その場合、「トークルームのテーブル」と「メッセージのテーブル」がデータとして必要になります。
かつ、「トークルームのテーブル」には最新メッセージを関連づけて保存しておくことができます。
オブジェクトへの変換も簡単
Firestore#toObject関数を使えば関連データ含めて、オブジェクトに変換することが可能です。
/** * メッセージルーム * * @property id ID * @property latestMessage 最新メッセージ */ data class TalkRoom( val latestMessage: Message? // ...省略 )
オブジェクトへの変換方法はこちらでも紹介しています。
ストレージには使えない
Firebase Storageのデータ参照を直接持つことは現状は無理なようです。
画像をStorageに保存して、FirestoreにパスをStringで保存しておくのがいいかもしれません。