์๋ ํ์ธ์ Foma๐ ์ ๋๋ค!
์ค๋์ Firestore์์ ์ฌ๋ฌ ํ์ ์ปฌ๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ๋ ์ ์ฉํ ์ปฌ๋ ์ ๊ทธ๋ฃน์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
์ปฌ๋ ์ ๊ทธ๋ฃน์ด๋?
์์ด๋๊ฐ ๊ฐ์ ์ปฌ๋ ์ ์ ๋ชจ์๋์ ์ปฌ๋ ์ ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด User ์ปฌ๋ ์ ์ด ์๊ณ ํ์ ์ปฌ๋ ์ ์ผ๋ก ์ ์ ๋ค์ ๋ฆฌ๋ทฐ๋ฅผ ๊ด๋ฆฌํ๋ Review์ปฌ๋ ์ ์ด ์๋ค๊ณ ๊ฐ์ ํ ๊ฒ์
User - user1 - Review
User - user2 - Review
...
๋ฑ์ผ๋ก ์ ์ ๋ง๋ค ๋ฆฌ๋ทฐ ํ์ ์ปฌ๋ ์ ๊ฐ์ง๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ง์ฝ์ ๋ชจ๋ ์ ์ ๋ค์ ๋ฆฌ๋ทฐ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
๋ณดํต Firestore์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ๋ ์๋์ ๊ฐ์ด ์ ํํ ๋ฐ์ดํฐ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํด์ฃผ์ด์ผ ํฉ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ ์ ๋ค ์๋งํผ getDocuments ์ฟผ๋ฆฌ๋ฅผ ์คํํด์ผํฉ๋๋ค.
Firestore.firestore().collection("User").document("user1").collection("Review").getDocuments...
Firestore.firestore().collection("User").document("user2").collection("Review").getDocuments...
Firestore.firestore().collection("User").document("user3").collection("Review").getDocuments...
์ด ๋ ํ์ํ๊ฒ ๋ฐ๋ก ์ปฌ๋ ์ ๊ทธ๋ฃน์ ๋๋ค.
์๋์ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ํ์ํ ์ปฌ๋ ์ ๋ค์ ๋์ผํ ์์ด๋๋ฅผ ์ ์ด์ฃผ์๊ณ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด
๋ชจ๋ ์ ์ ๋ค์ Review ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
Firestore.firestore().collectionGroup("Review").getDocuments ...
์ฌ๊ธฐ์ ์ฃผ์ํ์ค ์ ์ ์ปฌ๋ ์ ์์ด๋๊ฐ ์ค๋ณต๋์ง ์๊ฒ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
๋ง์ฝ ์ฌ์ฉ์๊ฐ ์๋ ๊ด๋ฆฌ์๋ ๋ฆฌ๋ทฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด
Admin - admin1 - Review
Admin - admin2 - Review
...
๊ฐ ์๊ฒ ์ฃ ?
์ฌ๊ธฐ์ ์ปฌ๋ ์ ๊ทธ๋ฃน์ ์์ด๋๊ฐ ๋์ผํ ๋ชจ๋ ์ปฌ๋ ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์ ๋ฆฌ๋ทฐ๋ฟ๋ง ์๋๋ผ ๊ด๋ฆฌ์์
๋ฆฌ๋ทฐ๊น์ง๋ ๋ชจ๋ ๊ฐ์ ธ์ค๊ฒ ๋๋ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค.
๊ณ ๋ก ๋ฐ๋์ ํ์ ์ปฌ๋ ์ ์ UserReview, AdminReview ๋ฑ์ผ๋ก ์ค๋ณต๋์ง ์๊ฒ ์์ฑํด์ฃผ์ด์ผ ํฉ๋๋ค.
์์ธ์์ฑ
๋ง์ฝ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์์ผ๋ก ํน์ ํน์ id๋ฅผ ๊ฐ์ง ์ ์ ์ ์ ๋ณด๋ง ๊ฐ์ ธ์ค๋๋ก ํ๊ณ ์ถ๋ค๋ฉด
์๋์ ๊ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ผ ํ๋๋ฐ์.
Firestore.firestore().collectionGroup("Review").order(by: "timeStamp",descending: true).whereField("uid", isEqualTo: "Foma").getDocuments {
์ด๋ ๊ฒ ์์ฑํ๊ธฐ ์ํด Firebase์์ ๋ฏธ๋ฆฌ ์์ธ์ด๋ผ๋ ๊ฒ์ ์์ฑํด์ฃผ์ด์ผ ํฉ๋๋ค.
Cloud Firestore์ 3๋ฒ์งธ ํญ์ ์๋ ์์ธ์ ๋๋ฌ์ ์ด๋ํ์๋ฉด
์๋์ ๊ฐ์ด ํ๋์ ์์ธ ์ถ๊ฐ ๋ฒํผ์ด ์์๊ฑฐ์์!
์ฌ๊ธฐ์ ์ฟผ๋ฆฌ์ ํ์ํ ํ๋๋ฅผ ์์ฑํด์ฃผ์๊ณ ์๋์ ์ฟผ๋ฆฌ ๋ฒ์๋ฅผ ์ปฌ๋ ์ ๊ทธ๋ฃน์ผ๋ก ์ ํํด์ฃผ์๊ณ ์์ธ์ ๋ง๋ค์ด์ฃผ์ธ์!
(์์ธ์ ์์ฑํ๋๋ฐ ํ 2~3๋ถ์ ๋ ์์๋๋ ๊ฒ ๊ฐ์์)
์ฌ๊ธฐ์ ์ฃผ์ํ์ค ์ ์ uid๊ฐ ๋์ผํ ์ ์ ๋ฅผ ์ฐพ๋๋ฐ ๋ด๋ฆผ์ฐจ์,์ค๋ฆ์ฐจ์์ผ๋ก ์ค์ ํด์ผํ๋? ๋ผ๊ณ ์๊ฐํ์ค ์ ์์ต๋๋ค.
Firebase์์๋ ์ฟผ๋ฆฌ์ ์ฌ์ฉ๋๋ ํ๋๋ผ๋ฉด ์ ๋ ฌ์ด ํ์ํ์ง ์๋๋ผ๋ ์ค์ ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
๋ํ ์ ๋ ฌ์ด ์๋ ํ๋๋ฅผ ๋ฐ๋์ ๋จผ์ ์์ฑํด์ฃผ์ด์ผ ํฉ๋๋ค.
(1๋ฒ์ timeStamp,2๋ฒ์ uid๋ก ์์ฑํ์๋ฉด ์ฟผ๋ฆฌ์์ ์๋ฌ๋ฅผ ๋ฐ์ํฉ๋๋ค. ๊ทธ ์ด์ ๋ ์์ง ์ฐพ์ง ๋ชปํ์ต๋๋ค..ใ
ํน์๋ผ๋ ์์๋ ๋ถ์ ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์..)
์ด๋ ๊ฒ ์์ธ์ ๋ง๋ค๊ณ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ฉด ํ์ ์ปฌ๋ ์ ์ Review๋ก ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์
์กฐ๊ฑด๋๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ค๋์ ์ด๋ ๊ฒ Firestore์ ์ปฌ๋ ์ ๊ทธ๋ฃน์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ฐ๋จํ๊ฒ ์์๋ณด์์ต๋๋ค.
ํน์๋ผ๋ ๊ถ๊ธํ์ ์ ์ด๋ ํ๋ฆฐ ์ ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
๋๊ธ