๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š Database/Firebase

[Firebase] ์ปฌ๋ ‰์…˜๊ทธ๋ฃน ์‚ฌ์šฉํ•ด๋ณด๊ธฐ(Firestore CollectionGroup)

by Fomagran ๐Ÿ’ป 2021. 7. 15.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” 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์˜ ์ปฌ๋ ‰์…˜๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

ํ˜น์‹œ๋ผ๋„ ๊ถ๊ธˆํ•˜์‹  ์ ์ด๋‚˜ ํ‹€๋ฆฐ ์ ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”!

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€