Firestoreのデータ設計について考える

508d2cf1990876daf4797795a2d81bd2?s=47 TakeshiNishi
February 26, 2020

 Firestoreのデータ設計について考える

「リモートで勉強会#5 - テーマ何でもLT会-」登壇資料です。
FirebaseのNoSQLデータベース「Firestore」のデータ設計についてまとめました。

508d2cf1990876daf4797795a2d81bd2?s=128

TakeshiNishi

February 26, 2020
Tweet

Transcript

  1. 2.

    ੢෢࢙ ʹ͚ͨ͠͠ !@UBLFTIJ@ ࣗݾ঺հ w ෱Ԭͷ4*FSͰγεςϜΤϯδχΞ w ϑϦʔϥϯεϓϩάϥϚʔ w ౦ژͷελʔτΞοϓ$P'PVOEFSऔక໾$50

    w ෱ԬͷελʔτΞοϓͰ৽نࣄۀ্ཱͪ͛ w גࣜձࣾEJ⒎FBTZऔక໾$50 w ελʔτΞοϓ૑ۀ४උதˡࠓ͜͜ /VYUKT'JSFCBTF7VFKT3VCZ($1ϒϩοΫνΣʔϯ ελʔτΞοϓىۀ ম͖೑ԹઘΩϟϯϓཱྀߦ ແ৬
  2. 6.

    'JSFTUPSFͷσʔλઃܭʹ͍ͭͯߟ͑Δ  'JSFTUPSFͷϦϨʔγϣϯσʔλΛͲ͏औΓѻ͏͔ʁ w 4VC$PMMFDUJPO w ΩʔࢀরϞσϧ w 3FGFSFODFܕ 

    ηΩϡϦςΟΛҙࣝͨ͠σʔλઃܭ  ݖݶ؅ཧ͸ΧελϜΫϨʔϜΛར༻  / ໰୊Ͳ͏͢Δʁ
  3. 17.

    'JSFTUPSFͰ͸ηΩϡϦςΟϧʔϧͷઃܭ͕େࣄ service cloud.firestore { match /databases/{database}/documents { match /users/{userId} {

    allow read; allow create: if request.auth.uid != null; allow update, delete: if request.auth.uid == userId; } ɹ} } جຊతʹϑϩϯτΤϯυ͔Β௚઀ૢ࡞Ͱ͖ΔͷͰɺϑϩϯτΤ ϯυଆͰ6TFS*%Λِ૷Մೳɻ
  4. 21.

    ݖݶ؅ཧ͸ΧελϜΫϨʔϜΛར༻ ྫ BENJOϢʔβʔ͸؅ཧऀը໘Λར༻Ͱ͖ͯɺҰൠϢʔβʔ ͸؅ཧऀը໘Λར༻Ͱ͖ͳ͍ɻ await admin.auth().setCustomUserClaims( uid, { admin: true

    } ) if(user.customClaims.admin) { } ΧελϜΫϨʔϜʹʮBENJOʯΛઃఆ BENJOͷ৔߹ͷΈॲཧΛߦ͏ w ΧελϜΫϨʔϜ͸ݖݶ؅ཧͷΈར༻ɻ w Ϣʔβʔͷ৘ใ͸DPMMFDUJPOΛར༻ɻ
  5. 23.

    / ໰୊Ͳ͏͢Δʁ db.collection(“diaries”).get() .then(function(snapshot) { snapshot(function(diary) { diary.data().user.get() }) })

    / ໰୊ɻϧʔϓ͝ͱʹϦΫΤετɻ / ͸͋Δఔ౓࢓ํͳ͍ɾɾ ྫ͑͹ɺ໾৬໊ͳͲ਺͕ݶఆతɺ΄ͱΜͲมΘΒͳ͍σʔλ ͸ɺϧʔϓͷલʹऔಘͯ͠ม਺ʹอ͓͍࣋ͯͯ͠ɺϧʔϓ಺Ͱɺ ม਺͔Βऔಘ͢ΔͳͲͷ޻෉ɻ