top of page

1分で理解!Firestoreのサブコレクション


*この記事ではJavaScriptで書いていきます。


NoSQLについてはこちらの記事へ↓


そもそもfirestoreってどういう形で保存するん?

firestoreはNoSQLの中でもドキュメント型と言われ、JSON形式のまま保存することができます。 firestoreではコレクション、ドキュメント、フィールド、データという4つの情報、 Key-Valueペアで構成されるデータを持つフィールド、フィールドを複数持つドキュメント、ドキュメントをまとめたコレクションという形でデータが構成されており、スキーマを決める必要がないため、自由にデータを保存することができます。





//書き込み
firebase.firestore().collection("auther")
    .set({name: "太郎", age: 20})
    
//読み込み
firebase.firestore().collection("auther")
    .where("name", "===", "太郎").where("age", "===", 20)
    
//更新
firebase.firestore().collection("auther")
    .doc(1).update({age: 21})

サブコレクションってなんなん?

また、firebaseにはサブコレクションという考え方もあり、1つのコレクションにリレーションを組むような形でコレクションを持たせることができます。 DB構成は下記の通りです。





autherコレクションがpostコレクションを保有するという、 より現実に近いような形でDBを構成することができます。


//書き込み
firebase.firestore().collection("auther")
    .doc(1).collection("post").set({text: こんにちは})

//読み取りfirebase.firestore().collection("auther")
    .doc(1).collection("post").where("text", "===", "こんにちは")

//更新
firebase.firestore().collection("auther")
    .doc(1).collection("post").doc(1).update({text: こんばんは})

どう設計すべきか

・リレーションを組んでおらず、joinリクエストができないので一度にデータを取得できるようにデータを持つ ・データを重複して持つことを許容する ・データを更新する場合は重複したデータに対してそれぞれ更新リクエストをかける

RDBではNGとされている、これらのデータの持たせ方、更新の仕方が推奨されています。

最新記事

すべて表示

Vue.jsのcomputedとdataの使い方の違い

Vue.jsを最初に触るとき、computedにデータ置くのとdataで持つのどう違うの… と思っていた頃がありました。違いをしっかり認識してそれぞれの特性を生かしてイケてるコードを書いていきましょう!では、いきましょう! export default { data ()...

Comments


bottom of page