1分で理解!Firestoreのサブコレクション
*この記事ではJavaScriptで書いていきます。
NoSQLについてはこちらの記事へ↓
https://qiita.com/Yu-kiFujiwara/items/c1c52495fd321373c544
そもそも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とされている、これらのデータの持たせ方、更新の仕方が推奨されています。
参照
Author And Source
この問題について(1分で理解!Firestoreのサブコレクション), 我々は、より多くの情報をここで見つけました https://qiita.com/Yu-kiFujiwara/items/fa32a99749005c80f89b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .