Webナイト宮崎 Vol.4 登壇枠で使用
参考URL https://tegehoge.connpass.com/event/128502/
FirestoreͷϧʔϧઃఆׂͱԿͰग़དྷͯϏϏΔגࣜձࣾRe:BuildՅ ါىʢ@kkznchʣ20195݄17ʢۚʣWebφΠτٶ࡚ Vol.4 ʙͯ͛FirebaseΛֶͼ͍ͨʙ
View Slide
͚͚ͣΜ @kkznchՅ ါى1990ͷԭೄੜ·ΕిྗձࣾͷITΠϯϑϥɺηΩϡϦςΟ↓גࣜձࣾRe:BuildͰWebΤϯδχΞ
ձࣾհ• גࣜձࣾRe:Buildʢ201711݄ʹઃཱʣ• ݱࡏͷࣾһ໊̑• ԭೄΛڌͱ͠ɺجຊతʹLaravelVue.jsΛͬͯडୗɾࣗࣾαʔϏε։ൃΛ͍ͯ͠Δ• ϦϞʔτϫʔΫɺࣗ༝ͳಇ͖ํΛਪ͍ͯ͠Δ
Firestore
Google͕ఏڙ͢ΔNoSQL DB
֊ܕσʔλߏΞΫηεϧʔϧΛઃఆͰ͖Δ
͠ϧʔϧΛઃఆ͠ͳ͍ͱ…
Databaseͷϧʔϧ
֊͝ͱʹϧʔϧΛద༻usersͱɺͦͷதͷimagesʹରͯͦ͠ΕͧΕϧʔϧΛద༻Ͱ͖Δservice cloud.firestore {match /databases/{database}/documents {match /users/{userId} {// rules…match /images/{imageId} {// rules…}}}}
֊ҎԼશͯʹϧʔϧΛద༻service cloud.firestore {match /databases/{database}/documents {match /{users=**} {// rules…}}}usersͱͦͷԼҐશͯʹϧʔϧΛద༻
allowϧʔϧྫ̍ʢςετ༻ʣservice cloud.firestore {match /databases/{database}/documents {match /{document=**} {allow read, write: if true;}}}υΩϡϝϯτશମʹৗʹread, writeΛallow͢ΔΑ
allowϧʔϧྫ̎service cloud.firestore {match /databases/{database}/documents {match /{document=**} {allow read, write: if request.auth != null;}}}ϩάΠϯ͍ͯ͠ΔͳΒread, writeΛallow͢ΔΑ
allowͷछྨ• read‣ get‣ list• write‣ create‣ update‣ delete
request, resource ม• request‣ ΫϥΠΞϯτ͔ΒͷϦΫΤετʹؔ͢ΔใΛࢀরͰ͖Δ• resource‣ ݱࡏͷDBͷঢ়ଶΛࢀরͰ͖Δ
get(), exists() ϝιου• get()‣ Ҿʹ༩͑ͨύε͔ΒΦϒδΣΫτΛऔಘ͢Δ• exists()‣ Ҿʹ༩͑ͨύεʹΦϒδΣΫτ͕ଘࡏ͢Δ͔boolͰฦ͢
in ʹ͍ͭͯ• if x in y‣ x͕ྻyʹؚ·Ε͍ͯΔ͔ΛνΣοΫ͢Δ
Έ߹ΘͤΔͱ͍͍ײ͡ʹͳΔservice cloud.firestore {match /databases/{database}/documents {function getRoom(roomId) {return get(/databases/{database}/documents/rooms/{roomId});}match /rooms/{roomId} {allow read, update: if request.auth != null&& request.auth.uid in getRoom(roomId).data.users;}}}ྫɿϧʔϜϝϯόʔͰ͋Εread, update͕Ͱ͖Δ
·ͱΊ
·ͱΊ• FirestoreϦιʔεຖʹೝՄͷઃఆ͕Ͱ͖Δ• allow, function, request/resourceม, get()/exists()ͳͲΛΈ߹Θͤͯࡉ͔͍ઃఆ͕Մೳ• దʹϧʔϧΛઃఆͯ͠ใΛकΓ·͠ΐ͏