Closed6

【Unity】Firebase Cloud Firestoreを使ってデータの読み書き

sukedonsukedon

やりたいこと

作ってるカジュアルゲームに簡単な掲示板機能を付けたい。

  • 投稿
    • 投稿内容の文字列
    • 投稿者名
    • 投稿者id
    • 投稿日時

をたくさん管理したい。
(ユーザー管理のテーブルは持たないので、idだけじゃなく名前も一緒にもたせてる)
投稿へのコメントとか"いいね"とかはつける予定無し。

"Cloud Firestore" or "Realtime Database"?

FirebaseのDBにはCloud FirestoreとRealtime Databaseの2つが選択肢としてある。
どっちを使えばいいかは公式の比較ページを見る
https://firebase.google.com/docs/firestore/rtdb-vs-firestore?hl=ja

sukedonsukedon

読み込み

こういう構造のcollectionを作ってみた。

取得する。

public async void GetPostCollectionSample()
{
    var database = FirebaseFirestore.DefaultInstance;
    // postsから作成日時(createdAt)でソートして新しい順に100件取得
    var query = database.Collection("posts").OrderByDescending("createdAt").Limit(100);
    var snapshot = await query.GetSnapshotAsync();
    
    // 冗長になるから変数を分けたけど、一度に書ける
    var snapshot2 = await FirebaseFirestore.DefaultInstance.Collection("posts")
        .OrderByDescending("createdAt").Limit(100).GetSnapshotAsync();
    
    foreach (var document in snapshot.Documents)
    {
        // 何かしらする
    }
}
sukedonsukedon

書き込み

public async void SetPostData()
{
    Dictionary<string, object> data = new Dictionary<string, object>()
    {
        {"author", "SampleName"},
        {"createdAt", Timestamp.GetCurrentTimestamp()},
        {"content", "これはテスト投稿です"},
    };
    await FirebaseFirestore.DefaultInstance.Collection("posts").Document().SetAsync(data);
    Debug.Log("投稿しました");
}

Firestoreのブラウザ側にちゃんと書き込まれてる

(・∀・)イイネ!!

このスクラップは2020/12/16にクローズされました