์๋ ํ์ธ์ Foma ๐ ์ ๋๋ค!
์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์์ด์ ๋ธ๋ก๊ทธ ํฌ์คํ ์ ๊ณ์ ๋ฏธ๋ค๋ค์..
์ค๋์ Firestore์์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ๊ฐ์งํ ์ ์๋ addSnapshotListener์ ์ฌ์ฉํ ๋
snapshot์ documents์ ๊ฐฏ์๋ฅผ ์ธ์ด๋ณด๋ฉด ์ ์ฒด ๊ฐฏ์๊ฐ ๋์ค๋๋ผ๊ตฌ์.
๊ทธ๋์ ๋ฌธ๋ "๋ฌธ์๊ฐ ํ๋๋ง ๋ณ๊ฒฝ๋ผ๋ ์ปฌ๋ ์ ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ฝ๋ ๊ฑด๊ฐ?"
๋ผ๋ ์๋ฌธ์ด ๋ค์ด์ ์คํํด๋ณธ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
Firestore
ํ์ด์ด๋ฒ ์ด์ค ๊ณต์ ๋ฌธ์์๋ ์๋์ ๊ฐ์ด ์ถ๊ฐ,์์ ,์ญ์ ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์ฝ๋ ํ์๊ฐ ์ฆ๊ฐํ๋ค๊ณ ๋์ธ์์ต๋๋ค.
(์ ๋.. ์ด๊ฑธ ๋ด๋ ์ ์ฒด ๋ฌธ์๋ฅผ ์ฝ๋๊ฑด์ง ์๋๋ฉด ๋ณ๊ฒฝ๋ ๊ฒ๋ง ์ฝ๋๊ฑด์ง ์ ํํ ์ ์๊ฐ ์๋๋ผ๊ตฌ์.)
๋ฐ์ดํฐ๋ ์๋์ ๊ฐ์ด Test๋ผ๋ ์ปฌ๋ ์ ์ number ํ๋๋ก 0๋ถํฐ 99๊น์ง ๊ฐ์ง๊ณ ์๋ ๋ฌธ์๊ฐ 100๊ฐ๊ฐ ์์ต๋๋ค.
Test ์ปฌ๋ ์ ์์ ์ด๋ค ๋ณ๊ฒฝ์ ๊ฐ์งํ๋ ๊ฒ์ด addSnapshotListener ๋ฉ์๋์ธ๋ฐ์.
์๋์ ๊ฐ์ด ์ปฌ๋ ์ ์ ๊ฒฝ๋ก์ ๋ฉ์๋๋ฅผ ๋ฌ์์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋์์๋,์์ ๋์์๋,์ญ์ ๋์์๋ ๋ฑ์ ๊ด์ฐฐํ ์ ์์ต๋๋ค.
Firestore.firestore().collection("Test").addSnapshotListener { snapshot, error in
guard let snapshot = snapshot else { return }
print(snapshot.documents.count)
snapshot.documentChanges.forEach { change in
switch change.type {
case .added:
print("added")
case .modified:
print("modified")
case .removed:
print("removed")
}
}
}
์ 100๊ฐ์ ๋ฐ์ดํฐ ์ค ํ๋์ ์ซ์๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ถ๋ ฅ์ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ด์ด๋ฒ ์ด์ค ์ฝ์์์ ์ซ์ 8์ 1000์ผ๋ก ๋ฐ๊พธ๋ฉด
์๋์ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ์์ ๋ ๊ฒ์ ๊ฐ์งํ์ฌ modified๋ผ๊ณ ์ ์ถ๋ ฅ๋ผ์ ๋์ต๋๋ค.
์ด์ ๋ฒํผ์ ๋๋ฌ์ ๋ฌธ์๋ฅผ ํ๋์ฉ ์ถ๊ฐํด์ฃผ๋ ์์ ์ ์งํํ ๊ฒ์ ๋๋ค.
๋จผ์ ์ ์ซ์๋ 101,102... ์ซ์๋ addSnapshotListener๋ฅผ ๋ฌ์๋์ Test ์ปฌ๋ ์ ์ ๋ฌธ์์ ๊ฐฏ์์ ๋๋ค.
์ด๋ ๊ฒ ์งํํ ๋ค ํ์ด์ด์คํ ์ด์ ์ฌ์ฉ๋์ ๋ณด๋ฉด
๋ณ๊ฒฝํ์ ๋ ๋ฐ์ดํฐ ์ฌ์ฉ๋์ ๋ณด๋ฉด ๋ ๋ฒ์ ๊ฑธ์ณ์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ๊ฐ ์ด 10๋ฒ์ฉ ๋ฐ์ํ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ฆ, addSnapshotListener๋ฅผ ๋ฌ์๋์ผ๋ฉด ์ปฌ๋ ์ ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ฝ๋ ๊ฒ์ด ์๋๋ผ ๋ณ๊ฒฝ๋ ๋ฌธ์ ํ๋๋ง ์ฝ๋๋ค.
์ค๋์ ์ด๋ ๊ฒ addSnapshotListener์ด ํธ์ถ๋ ๋ ์ฝ๋ ํ์๋ฅผ ์คํํด๋ณด๊ณ
๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
ํน์๋ผ๋ ๊ถ๊ธํ์๊ฑฐ๋ ํ๋ฆฐ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ธ์ ๋ ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์~
๋๊ธ