๐Ÿ“ฑ App Development Study/iOS๐ŸŽ

[Udemy iOS & Swift Bootcamp] Firebase's Cloud Firestore

ibelieveinme 2023. 7. 2. 17:11
728x90

* Cloud Firestore: ๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ Firebase์˜ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.

 

Firestore  |  Firebase

์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ NoSQL ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ํด๋ผ์ด์–ธํŠธ ์ธก ๊ฐœ๋ฐœ ๋ฐ ์„œ๋ฒ„ ์ธก ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋™๊ธฐํ™”ํ•˜์„ธ์š”.

firebase.google.com


Firebase์— 2๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋‹ค. ๊ธฐ์กด firebase ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ Realtime Database, ๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์—…๋ฐ์ดํŠธ๋œ Cloud Firestore. ๊ธฐ์กด firebase์— ์ฟผ๋ฆฌ๋‚˜ MongoDB ๊ฐ™์€ ํ˜„๋Œ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์›ํ•ด์„œ ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๋” ์ž์„ธํ•œ ์ฐจ์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

[Cloud Firestore VS Realtime Database]

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹ ๋ฌธ์„œ ์ฐธ์กฐ.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ ํƒ: Cloud Firestore ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค  |  Firebase Realtime Database

Google I/O 2023์—์„œ Firebase์˜ ์ฃผ์š” ์†Œ์‹์„ ํ™•์ธํ•˜์„ธ์š”. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์˜๊ฒฌ ๋ณด๋‚ด๊ธฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ ํƒ: Cloud Firestore ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ

firebase.google.com


[Cloud Firestore ๋งŒ๋“ค๊ธฐ]

1. Cloud Firestore ์‹œ์ž‘ํ•˜๊ธฐ

Firebase์— ์ ‘์†ํ•œ ํ›„, ๊ธฐ์กด์— ๋งŒ๋“ค์–ด ๋†“์€ ํ”„๋กœ์ ํŠธ๋กœ ๋“ค์–ด๊ฐ€์„œ Firestore Database๋ฅผ ํด๋ฆญํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ฃผํ™ฉ ํ™”๋ฉด์ด ๋œจ๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•œ๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ๋ชจ๋“œ์—์„œ ์‹œ์ž‘ํ•ด์ค€๋‹ค.

 

์œ„์น˜๋Š” ๊ทธ๋ƒฅ ๊ธฐ๋ณธ๊ฐ’์ธ US๋กœ ์„ค์ •ํ•ด์ค€๋‹ค. ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์–ด์ง€๋ฉด ๋” ๋น„์‹ธ์ง„๋‹ค๋‚˜..?

 

์š”๋Ÿฐ ํ™”๋ฉด์ด ๋œจ๋ฉด ์ค€๋น„์™„๋ฃŒ๋‹ค.

 

iOS ํ”„๋กœ์ ํŠธ ์ƒ์—์„œ๋„ Firebase๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฝ”๋“œ ์…‹ํŒ…์„ ํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ

์ด๋ฏธ ์ด์ „ ๊ฐ•์˜์—์„œ Pods ์„ค์น˜ํ•˜๋ฉด์„œ FirebaseFirestore๋ฅผ ์…‹ํŒ…ํ•ด์คฌ์—ˆ๋‹ค. ์ด์ „ Cocoapod ๊ฒŒ์‹œ๋ฌผ ์ฐธ๊ณ !

 

2. Cloud Firestore ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ

AppDelegate ํด๋ž˜์Šค์˜ application ํ•จ์ˆ˜ ์•ˆ์—์„œ firestore()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ณ€์ˆ˜๋กœ ๊ฐ–๊ณ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

3. Firestore ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•˜๊ธฐ

์ฑ„ํŒ… ํ…์ŠคํŠธ ํ•„๋“œ์—์„œ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์œ„์™€ ๊ฐ™๋‹ค.

collection ๊ด„ํ˜ธ ์•ˆ์— ์žˆ๋Š” collectionName์€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ด๋ฆ„์œผ๋กœ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

์ฑ„ํŒ… ํ…์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ณด๋‚ด๋Š” ํด๋ž˜์Šค์—์„œ ์ „์—ญ๋ณ€์ˆ˜๋กœ Firestore.firestore()๋ฅผ ์ฐธ์กฐํ•ด์ฃผ๊ณ ,

๋ณด๋‚ด๊ธฐ ๋ฒ„ํŠผ์—์„œ messageBody, messageSender๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ฐ์ดํ„ฐ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋„ฃ์–ด์ฃผ์—ˆ๋”ฐ.

data๋Š” json ํ˜•์œผ๋กœ key, value ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.

 

์ž…๋ ฅํ•œ ๋ฉ”์„ธ์ง€๊ฐ€ Firestore Database์— ์ถ”๊ฐ€๋œ ๋ชจ์Šต

 

4. Firestore ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

Firestore ๋ฐ์ดํ„ฐ๋Š” collection ์ด๋ฆ„์œผ๋กœ getDocuments() ํ•จ์ˆ˜๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์„ฑ๊ณต์‹œ, querySnapshot์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ sender, body ์— ๋งž์ถฐ์„œ ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•ด์„œ tableVIew๋ฅผ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•ด์ฃผ๋ฉด ํ™”๋ฉด์— ๋ณด์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด ๋•Œ, ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ ๋ณด๋‚ธ ์ฑ„ํŒ…๋“ค์€ ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š๋Š” ์ด์Šˆ๊ฐ€ ์žˆ๋Š”๋ฐ,

์ด๋Š” addSnapshotListener ๊ตฌ๋ฌธ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค.

 

https://firebase.google.com/docs/firestore/query-data/listen?hl=ko 

 

Cloud Firestore๋กœ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ  |  Firebase

Google I/O 2023์—์„œ Firebase์˜ ์ฃผ์š” ์†Œ์‹์„ ํ™•์ธํ•˜์„ธ์š”. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์˜๊ฒฌ ๋ณด๋‚ด๊ธฐ Cloud Firestore๋กœ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜

firebase.google.com

 

์ด ๋•Œ, ๊ธฐ์กด์— ์ž„์˜๋กœ ๋งŒ๋“  ์ฑ„ํŒ… ๋ฌธ์ž๊ฐ€ ๊ณ„์† ๋ณด์ธ๋‹ค๋ฉด, querySnapshot ์‚ฌ์šฉ ์ „์— self.message = [] ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

5. Message ์ •๋ ฌํ•˜๊ธฐ

์ด ๋•Œ, ์ƒˆ ์ฑ„ํŒ…์ด ๋งจ ๋ฐ‘์ด ์•„๋‹Œ ์ค‘๊ฐ„์— ๋ผ๋Š” ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค. id๋กœ ์ •๋ ฌ๋ผ์„œ ๊ทธ๋ ‡๋‹ค.

 

๋‚ ์งœ๋กœ ์ •๋ ฌํ•˜๋ ค๋ฉด ๋ฉ”์„ธ์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ, date ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  load ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ •๋ ฌ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

https://firebase.google.com/docs/firestore/query-data/order-limit-data?hl=ko 

 

Cloud Firestore๋กœ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฐ ์ œํ•œ  |  Firebase

Google I/O 2023์—์„œ Firebase์˜ ์ฃผ์š” ์†Œ์‹์„ ํ™•์ธํ•˜์„ธ์š”. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์˜๊ฒฌ ๋ณด๋‚ด๊ธฐ Cloud Firestore๋กœ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฐ ์ œํ•œ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜

firebase.google.com

 

์ฐธ๊ณ ๋กœ firestore ๋ฐ์ดํ„ฐ ์‚ญ์ œ๋Š” ์œ„์™€ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.

 

6. ๋ณด์•ˆ์„ค์ •ํ•˜๊ธฐ

ํ…Œ์ŠคํŠธ Firestore Database ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์•ˆ์„ค์ •์„ ๋”ฐ๋กœ ํ•ด์ฃผ์ž.

 

ํ˜„์žฌ๋Š” ๋ชจ๋‘๊ฐ€ ํ•œ๋‹ฌ๋™์•ˆ read, write ๊ถŒํ•œ์„ ๊ฐ–๊ณ ์žˆ๋‹ค.

 

Firebase ๊ณต์‹๋ฌธ์„œ์—์„œ ๋ณด๋ฉด if request.auth != null ๊ตฌ๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ถŒํ•œ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๊ทœ์น™์— ๋„ฃ๊ณ  ๊ฒŒ์‹œํ•˜์ž.

 

 

https://firebase.google.com/docs/firestore/security/get-started?hl=ko 

 

Cloud Firestore ๋ณด์•ˆ ๊ทœ์น™ ์‹œ์ž‘ํ•˜๊ธฐ  |  Firebase

Google I/O 2023์—์„œ Firebase์˜ ์ฃผ์š” ์†Œ์‹์„ ํ™•์ธํ•˜์„ธ์š”. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์˜๊ฒฌ ๋ณด๋‚ด๊ธฐ Cloud Firestore ๋ณด์•ˆ ๊ทœ์น™ ์‹œ์ž‘ํ•˜๊ธฐ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜

firebase.google.com

 

728x90