JS ํŒŒ์ด์–ด๋ฒ ์ด์Šค DB ๋ฐ์ดํ„ฐ count ์ง‘๊ณ„ํ•ด์„œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
728x90

Today, What I learned?

์–ด๋Š๋ง ํ”„๋กœ์ ํŠธ๊ฐ€ ์ค‘ํ›„๋ฐ˜ ์ •๋„ ์™”๋‹ค. ๐Ÿ˜‡

๋‚˜์˜ ๋‹ด๋‹น ๊ธฐ๋Šฅ์„ ์–ผ์ถ” ๋งˆ๋ฌด๋ฆฌ ํ•œ ๋‚ !...

์˜ค๋Š˜์€ ํŒŒ์ด์–ด๋ฒ ์ด์Šค์˜ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.

์‚ฝ์งˆ์„ ๊ฝค ๋งŽ์ด ํ•˜๊ธฐ๋„ ํ•จ ใ…Ž (2์‹œ๊ฐ„๊ฐ€๋Ÿ‰..)

 

 

getCountFromServer

getCountFromServer ๋ผ๋Š” ํŒŒ์ด์–ด๋ฒ ์ด์Šค API๊ฐ€ ์žˆ๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋Š” ์Šค๋ƒ…์ƒท์„ ์ฐ์–ด์„œ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์ด๊ณ , ํ˜„์žฌ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ ์ง์ ‘์ ์ธ ์‘๋‹ต์„ ํ†ตํ•ด์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” ํ•จ์ˆ˜๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ๋™ํ•œ๋‹ค.

const coll = collection(db, "cities");
const query_ = query(coll, where('state', '==', 'CA'));
const snapshot = await getCountFromServer(query_);
console.log('count: ', snapshot.data().count);

 

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ฌธ์„œ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ.

https://firebase.google.com/docs/firestore/query-data/aggregation-queries?hl=ko

 

์ง‘๊ณ„ ์ฟผ๋ฆฌ๋กœ ๋ฌธ์„œ ๊ณ„์‚ฐ  |  Firestore  |  Firebase

Firebase Summit์—์„œ ๋ฐœํ‘œ๋œ ๋ชจ๋“  ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด๊ณ  Firebase๋กœ ์•ฑ์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ  ์•ˆ์‹ฌํ•˜๊ณ  ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์ด ํŽ˜์ด์ง€๋Š” Cloud Translation API๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ

firebase.google.com

 

 

 

์‚ฝ์งˆ ๊ณผ์ •

๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ–ˆ๋˜ ๊ธฐ๋Šฅ์€ ์ธ๊ธฐ ๋ธŒ๋žœ๋“œ๋ฅผ ๋“ฑ์ˆ˜ํ™” ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

๋ฆฌ๋ทฐ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ 1~5์œ„๋ฅผ ์ถ”๋ ค๋‚ด๊ธฐ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ๋ธŒ๋žœ๋“œ๋ณ„ ๋ฆฌ๋ทฐ์ˆ˜๋ฅผ ์•Œ์•„์•ผ ํ–ˆ๋‹ค.

๋‹ค๋ฅธ DB์˜€๋‹ค๋ฉด join ๊ฐ™์€ ์—ฐ์‚ฐ์œผ๋กœ ์‰ฝ๊ฒŒ ์ถ”๋ ค๋ƒˆ๊ฒ ์ง€๋งŒ ํŒŒ์ด์–ด๋ฒ ์ด์Šค DB์—๋Š” ๊ทธ๋Ÿฐ ๊ฑฐ ์—†๋‹ค.. ๐Ÿ˜‚

(ํ˜น์‹œ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ฐ”๋ž๋‹ˆ๋‹ค..)

 

๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๋กœ์ง์€ ์ด๋žฌ๋‹ค.

  • ๋ธŒ๋žœ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ DB๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ (์ด๋ฏธ ์žˆ๋Š” ๋กœ์ง์ด๋ผ ๋”ฐ๋กœ ๋ฆฌํŒฉํ† ๋งํ•ด์„œ ํ•จ์ˆ˜ ๋ถ„๋ฆฌํ•˜๊ธฐ)
  • ๋ชจ๋“  ๋ธŒ๋žœ๋“œ๋ณ„ ๋ฆฌ๋ทฐ ๊ฐœ์ˆ˜๋ฅผ getCountFromServer๋กœ ๊ฐ€์ ธ์™€์„œ ๋ณ„๋„๋กœ ์ €์žฅ.
  • sort๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ
  • ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๋“ฏ ๋ Œ๋”๋ง

์ด์ œ ๋ณ„๋„๋กœ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์ด ์ž˜ ์ด๋ฃจ์–ด์กŒ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์œผ๋‚˜..?

์–ด์งธ์„œ์ธ์ง€ ์ •๋ ฌ๋„ ๋ Œ๋”๋ง๋„ ์•ˆ ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

 

์šฐ์„  ๋‚ด๊ฐ€ ์ œ๋Œ€๋กœ ์ž˜ ๋‹ด์•˜๋Š”์ง€.. ์–˜๊ฐ€ ๋ฐฐ์—ด์ด ๋งž๋Š”์ง€๋„ ํ™•์ธํ•˜๊ณ ..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฐฐ์—ด๋„ ๋„“์€ ์˜๋ฏธ์—์„œ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— isArray ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒŒ ํ™•์‹คํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค..

 

 

 

๊ทธ๋ž˜์„œ ์ฝ˜์†”๋กœ ์ฐ์–ด๋ณด๋‹ˆ ๋ถ„๋ช… ๋ฐฐ์—ด์ด ๋‹ด๊ฒผ๋Š”๋ฐ? ๊ธธ์ด๊ฐ€ 0์ธ ์ƒํ™ฉ....

๋ญ”๋ฐ?..

๋ฐฐ์—ด์— ๋”ฐ๋กœ ์ €์žฅ์ด ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ ~~

์ผ๋‹จ ๋‚˜๋Š” ๊ทธ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™”์„ ๋•Œ์˜ ๋ฐฉ์‹๊ณผ ๊ฐ™์ด ๊ณ„์† ์จ์™”๋˜ forEach๋กœ ์‹œ๋„ํ•ด๋ณด๊ณ  ์žˆ์—ˆ๋‹ค.

forEach ๋ฉ”์„œ๋“œ๋กœ ์‹œ๋„ํ•˜๋‹ค ๋ณด๋‹ˆ getCountFromServer ๋Š” await๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— async๋กœ ๊ฐ์Œ€ ์ˆ˜๋ฐ–์— ์—†์—ˆ๋‹ค.
์•„๋งˆ ์ด ๋ถ€๋ถ„์—์„œ forEach๋ฌธ ๋ฐ”๊นฅ์˜ ์ฝ”๋“œ๋“ค์ด ๋จผ์ € ์‹คํ–‰๋˜์–ด๋ฒ„๋ฆฐ ๊ฒŒ ์•„๋‹๊นŒ.. ํ•˜๊ณ  ์ถ”์ •ํ•˜๊ณ  ์žˆ๋‹ค.

((์—ฌ๊ธฐ๊นŒ์ง€ ๊นจ๋‹ซ๋Š”๋ฐ ๋‘ ์‹œ๊ฐ„ ๊ฑธ๋ ธ๋‹ค))

๊ทธ๋Ÿผ ๋ฉ”์„œ๋“œ ์•ˆ ์“ฐ๊ณ  ์ •์„๋Œ€๋กœ ๊ฐ€๋ฉด ๋˜์ง€! ์‹ถ์–ด์„œ for๋ฌธ์œผ๋กœ ๋ฐ”๊พผ ํ›„..

๋ฐ”๋ผ๋˜ ๋Œ€๋กœ ์ •์ƒ ๋™์ž‘ํ–ˆ๋‹ค. ๐Ÿ‘ ์•ผํ˜ธ.

 

 

 

 

 

๋‚ด์ผ์€ ํ”„๋กœ์ ํŠธ ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ์ข€ ํ•  ์ˆ˜ ์žˆ๊ธธ ํฌ๋งํ•˜๋ฉฐ ํŒŒ์ดํŒ….. ๐Ÿ˜‚

 

 

 

728x90