๊ณต์‚ผ
article thumbnail


๐Ÿ’ฌ ๋“ค์–ด๊ฐ€๋ฉฐ

firebase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘์— ๊ฒŒ์‹œ๊ธ€์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์•ผํ•˜๋Š” ๋ฌธ์ œ์ ์ด ์ƒ๊ฒผ๋‹ค.

 

 

์ด๋Ÿด๋• onSnapshot์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ DB์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. 

 

์ด onSanpshot์€ firestore๋ฅผ ์ด์šฉํ•˜๋Š”๋ฐ ..

 

FireStore๋ž€? 

Firestore๋Š” ๊ตฌ๊ธ€(firebase)์—์„œ ์ง€์›ํ•˜๋Š” NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค๋กœ, ์‹ค์‹œ๊ฐ„ ๋ฆฌ์Šค๋„ˆ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์™€ ๊ธฐ๊ธฐ๊ฐ„ ๋ฐ์ดํ„ฐ์˜ ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๋˜ํ•œ, Cloud Firestore๋Š” ์•ฑ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๊ธฐ๊ฐ€ ์˜คํ”„๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜๋”๋ผ๋„ ์•ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ์ฝ๊ณ  ์ˆ˜์‹  ๋Œ€๊ธฐํ•˜๊ณ  ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

firebase๋ฅผ ์ด์šฉํ•ด๋ณธ ์‚ฌ๋žŒ์ด๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์•„๋Š” ๋ถ€๋ถ„์ผ ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์—์„œ firestore Database์— ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 

์ด๋Ÿฐ์‹์œผ๋กœ ์Œ“์ธ DB๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด onSnapshot ํ•จ์ˆ˜์ด๋‹ค. 

 

 

๐Ÿ’ก ์ด์šฉ๋ฐฉ๋ฒ•

useEffect(() => {
    onSnapshot(collection(dbService, "content"), (snapshot) => {
      const contentArray = snapshot.docs.map((doc) => ({
        id: doc.id,
        ...doc.data(),
      }));
      setContents(contentArray);
    });
}, []);

 

์šฐ์„  useEffect๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ทธ ์•ˆ์— onSnapshot ํ•จ์ˆ˜๋ฅผ ๋‹ด๋Š”๋‹ค. 

 

์•„๊นŒ ์„ค๋ช…ํ•œ ๋“ฏ์ด firestore๋ฅผ ์ด์šฉํ•˜๋Š” ํ•จ์ˆ˜๋กœ Firestore์˜ ์Šค๋ƒ…์ƒท์„ ๊ตฌ๋…ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. 

 

ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์Šค๋ƒ…์ƒท์„ ๊ตฌ๋…ํ•  Firestore ์ปฌ๋ ‰์…˜์„ ๋ฐ›๊ณ , ๋‘๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค. 

 

์ฒซ๋ฒˆ์งธ - collection(dbService, "content")

(dbService์˜ content ์˜์—ญ์„ ํ˜ธ์ถœํ•œ๋‹ค. ์œ„์—์žˆ๋Š” firebase ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ฉด ์ปฌ๋ ‰์…˜ ์ด๋ฆ„์ด content์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ.) 

 

๋‘๋ฒˆ์งธ - snapshot

 

์ฝœ๋ฐฑํ•จ์ˆ˜์—์„œ๋Š” ์Šค๋ƒ…์ƒท์—์„œ ๊ฐ€์ ธ์˜จ ๋ฌธ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด๋กœ ๋งคํ•‘ํ•œ๋‹ค. ๋ฌธ์„œ์˜ 'id'์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ด ๋ฐฐ์—ด์„ React ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ์ธ 'contents'์— ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค. 

 

๋”ฐ๋ผ์„œ 'setContents'ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. 

 

 

 

 

๐Ÿ”— ์ฐธ๊ณ 

https://guiyomi.tistory.com/123

 

Firebase - ์›น์—์„œ Firebase auth๋กœ ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„

๋ฆฌ์•กํŠธ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ์ธ์ฆ ๋กœ๊ทธ์ธ ๊ตฌํ˜„ ๊ณผ์ œ๋ฅผ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ firebase auth ํŒจํ‚ค์ง€ ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ๋‹ค. ๋จผ์ €, firebase ์ฝ˜์†”์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ๋กœ๊ทธ์ธ - Google ๊ณ„์ • ํ•˜๋‚˜์˜ ๊ณ„์ •์œผ๋กœ ๋ชจ

guiyomi.tistory.com

https://biio-studying.tistory.com/123

 

Firebase_ onSnapshot์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ DB ๊ฐ€์ ธ์˜ค๊ธฐ

firestore().collection('์ฝœ๋ ‰์…˜์ด๋ฆ„')์—๋Š” onSnapshopt์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. get๋Œ€์‹  snapshot์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ DB๋ฅผ ๋ฐ›์•„์™€๋ณด์ž. onsnapshot ์•ˆ

biio-studying.tistory.com

 

 

 

 

profile

๊ณต์‚ผ

@g_three

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!