* Cloud Firestore: ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ์ ์ํ Firebase์ ์ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค.
Firebase์ 2๊ฐ์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ค. ๊ธฐ์กด firebase ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ Realtime Database, ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ์ ์ํด ์ ๋ฐ์ดํธ๋ Cloud Firestore. ๊ธฐ์กด firebase์ ์ฟผ๋ฆฌ๋ MongoDB ๊ฐ์ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ป์ ์ ์๋ ๊ฒ์ ์ํด์ ์ ๊ทธ๋ ์ด๋ ๋์๋ค๊ณ ํ๋ค. ๋ ์์ธํ ์ฐจ์ด๋ ์๋์ ๊ฐ๋ค.
[Cloud Firestore VS Realtime Database]
๋ ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์ ์ฐธ์กฐ.
[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
์ด ๋, ๊ธฐ์กด์ ์์๋ก ๋ง๋ ์ฑํ ๋ฌธ์๊ฐ ๊ณ์ ๋ณด์ธ๋ค๋ฉด, querySnapshot ์ฌ์ฉ ์ ์ self.message = [] ๋ก ๋ฉ์ธ์ง๋ฅผ ์ด๊ธฐํํด์ฃผ๋ฉด ๋๋ค.
5. Message ์ ๋ ฌํ๊ธฐ
์ด ๋, ์ ์ฑํ ์ด ๋งจ ๋ฐ์ด ์๋ ์ค๊ฐ์ ๋ผ๋ ์ด์๊ฐ ์๋ค. id๋ก ์ ๋ ฌ๋ผ์ ๊ทธ๋ ๋ค.
๋ ์ง๋ก ์ ๋ ฌํ๋ ค๋ฉด ๋ฉ์ธ์ง๋ฅผ ๋ง๋ค ๋, date ํ๋๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ load ํจ์ ๋ด์์ ์ ๋ ฌ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ๋ฉด ๋๋ค.
https://firebase.google.com/docs/firestore/query-data/order-limit-data?hl=ko
์ฐธ๊ณ ๋ก firestore ๋ฐ์ดํฐ ์ญ์ ๋ ์์ ๊ฐ์ด ํ๋ฉด ๋๋ค.
6. ๋ณด์์ค์ ํ๊ธฐ
ํ ์คํธ Firestore Database ๋ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋ค. ๋ฐ๋ผ์ ๋ณด์์ค์ ์ ๋ฐ๋ก ํด์ฃผ์.
ํ์ฌ๋ ๋ชจ๋๊ฐ ํ๋ฌ๋์ read, write ๊ถํ์ ๊ฐ๊ณ ์๋ค.
Firebase ๊ณต์๋ฌธ์์์ ๋ณด๋ฉด if request.auth != null ๊ตฌ๋ฌธ์ ์ถ๊ฐํ์ฌ ๊ถํ์ ๋ณดํธํ ์ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด๋ฅผ ๋ณต์ฌํด์ ๊ท์น์ ๋ฃ๊ณ ๊ฒ์ํ์.
https://firebase.google.com/docs/firestore/security/get-started?hl=ko
'๐ฑ App Development Study > iOS๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Udemy iOS & Swift Bootcamp] ์ฑํ ์์ฑํ๊ธฐ 1 (๋ฐ์ ์/์์ ์ ๊ตฌ๋ถํ๊ธฐ) (0) | 2023.07.03 |
---|---|
[Udemy iOS & Swift Bootcamp] Keyboard ๋ค๋ฃจ๊ธฐ (0) | 2023.07.02 |
[Udemy iOS & Swift Bootcamp] Type Casting (0) | 2023.07.02 |
[Udemy iOS & Swift Bootcamp] Table View(DataSource, Delegate) (0) | 2023.06.27 |
[Udemy iOS & Swift Bootcamp] ๋ฌธ์์ด์ ์ํ ์์์ฝ๋ํ์ผ ๋ง๋ค๊ธฐ (0) | 2023.06.22 |