Uncaught FirebaseError: The query requires an index. You can create it here: ํ์ด์ด๋ฒ ์ด์ค๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋์ค ๋ง๋ ์๋ฌ!.. ์ง๊ธ๊น์ง๋ DB์ ์๋ ๋ชจ๋ ๋๊ธ์ ๊ฐ์ ธ์์ ๋ ๋๋ง ํด์ฃผ๊ณ ์์๋๋ฐ, ๊ฐ ๋ฆฌ๋ทฐ์๋ง ์์ฑํ ๋๊ธ์ ๋ถ๋ฌ์ค๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ง๋ค๊ฐ ๋ง๋ฌ๋ค. ์์ ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ฉด ์ธ๋ฑ์ค(์์ธ)๋ฅผ ์์ฑํด์ผ ํ๋ค๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๊ณ ์๋ค. ์๋ ์ฟผ๋ฆฌ๋ฌธ ๋ณด๋ฉด where์ orderBy๋ฅผ ํจ๊ป ์ฐ๊ณ ์๋๋ฐ ๋ณตํฉ ์ฟผ๋ฆฌ์ฌ์ ๊ทธ๋ฐ์ง ์ ๋ถ๋ถ์ ์์ธ์ด ํ์ํ ๊ฒ ๊ฐ๋ค. ํด๊ฒฐ ํ์ด์ด๋ฒ ์ด์ค ์ฝ์์์ firestore์ ๋ค์ด์ค๋ฉด ํญ์ ์์ธ์ด๋ผ๋ ๊ฒ์ด ์๋ค. ์์ธ ์ถ๊ฐ๋ฅผ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ด ๋ณตํฉ ์์ธ์ ๋ง๋ค ์ ์๋๋ฐ, ์ ์ฉํ ์ปฌ๋ ์ ๊ณผ ํ์ํ ํ๋๋ค์..
Today, What I learned? ์ด๋๋ง ํ๋ก์ ํธ๊ฐ ์คํ๋ฐ ์ ๋ ์๋ค. ๐ ๋์ ๋ด๋น ๊ธฐ๋ฅ์ ์ผ์ถ ๋ง๋ฌด๋ฆฌ ํ ๋ !... ์ค๋์ ํ์ด์ด๋ฒ ์ด์ค์ DB์์ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํด์ฃผ๋ ํจ์์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. ์ฝ์ง์ ๊ฝค ๋ง์ด ํ๊ธฐ๋ ํจ ใ (2์๊ฐ๊ฐ๋..) getCountFromServer getCountFromServer ๋ผ๋ ํ์ด์ด๋ฒ ์ด์ค API๊ฐ ์๋ค. ์ด ๋ฉ์๋๋ ์ค๋ ์ท์ ์ฐ์ด์ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ํจ์์ด๊ณ , ํ์ฌ ๋ฐฑ์๋ ์๋ฒ์์ ์ง์ ์ ์ธ ์๋ต์ ํตํด์๋ง ๋์ํ๋ ํจ์๋ค. ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌ๋ํ๋ค. const coll = collection(db, "cities"); const query_ = query(coll, where('state', '==', 'CA')); const sn..
ํ๋ก์ ํธ 3~4์ผ์ฐจ ์ด์ฐ์ ์ฐ ์ ์ ์์ด ํ๋ค๋ณด๋ ์ผ์ง ์ธ ์งฌ์ด ์์๋ค ^^.. ๊ทธ๋๋ ์๊ฐ๋ณด๋ค ์๋ฃ๋ค์ด ์ฌ์ฌ ๋์ด๋๊ณ ์์ด์ ๋คํ์ด๋ผ๋ ์๊ฐ!.. ๋ ํ์ ๋ชจ๋๊ฐ ์ต์ 1๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. ๐๐๐ ๊ธฐ๋ฅ ์ถ๊ฐ ํ ๋น๋ ํ์๋ฅผ ํตํด ์ ์ด๋ฃจ์ด์ง๋ ์ค. ์์ง๊น์ง๋ ๊นํ๋ธ๋ ๋ฌธ์ ์๊ธด์ ์ด ์์ด์ ๋คํ์ด๋ค! PR๋ ๋ฆฌ๊ณ ๋ณํฉํ๋ ๊ฒ์ ์ต์ํด์ง๋ ์ค... ์ ๋ฒ ๊ทธ๋ด๋ฏํด~
Today, What I learned? ๋ด ๊ธฐ๋ฅ ๊ตฌํ๋ ํ๊ณ ํ์๋ค ์๋ฌ๋ ๋ด์ฃผ๋ค๋ณด๋ ์ด์ด ๋ น๋ ํ๋ฃจ... ๐ซ ๐ซ ๐ซ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ํ์ด์ด๋ฒ ์ด์ค์์ ์ค์๊ฐ์ผ๋ก DB๋ฅผ ๋ฐ์์ด ํ์ํ ๊ธฐ๋ฅ์ด ์์๋ค. ์ค๋์ ์ด ๋ถ๋ถ์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค! ํ์ด์ด๋ฒ ์ด์ค์์ ์ค์๊ฐ์ผ๋ก DB ๋ฐ์ํ๊ธฐ onSnapShot() ์ด๋ผ๋ ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค. ์ด ๋ฉ์๋๋ ๋ฌธ์ ์ค๋ ์ท์ ์ฆ์ ์์ฑํ๊ณ , ๋ด์ฉ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ค์ ํธ์ถ๋์ด ๋ฌธ์ ์ค๋ ์ท์ ์ ๋ฐ์ดํธํ๋ค. ์์ธํ ๋ด์ฉ์ ์๋ ํ์ด์ด๋ฒ ์ด์ค ๋ฌธ์์์ ํ์ธํด๋ณผ ์ ์๋ค. https://firebase.google.com/docs/firestore/query-data/listen Cloud Firestore๋ก ์ค์๊ฐ ์ ๋ฐ์ดํธ ๋ฐ๊ธฐ | Firebase Firebase Summit..
FirebaseError: Missing or insufficient permissions. ์ค๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๊ฐ ํ์ด์ด๋ฒ ์ด์ค์์ Cloud Firestore๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ค ํ๋๋ฐ ๋ง๋ ํ์ด์ด๋ฒ ์ด์ค ์๋ฌ๋ค. ์ด ์๋ฌ๋ ํ์ด์ด๋ฒ ์ด์ค์ DB ์ ๊ทผ๊ณผ ๊ด๋ จํด์ ๊ด๋ จ๋ ๊ถํ์ด ์์ด์ ๋ฐ์ํ ๊ฒ์ด๋ค. ๊ทธ๋์ ํ์ด์ด๋ฒ ์ด์ค DB์์ ๋ณด์๊ท์น์ ๋ณ๊ฒฝ ํด์ฃผ์ด์ผ ํ๋ค. ํด๊ฒฐ! ํ์ด์ด๋ฒ ์ด์ค ๋ณด์ ๊ท์น ์ค์ ์๋ง firestore๋ฅผ ์์ฑํ๋ค๋ฉด ์ด๋ ๊ฒ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ์ด ๋์ด์์ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ 5๋ฒ์งธ ์ค์ allow read, write: if true; ๋ก ๋ณ๊ฒฝํ๋ค. ํ์ง๋ง ์ด ์ค์ ์ ๋ชจ๋ ์ฌ๋์ด ๊ถํ์์ด DB๋ฅผ ์ฝ๊ณ ์ธ ์ ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ ์คํธ ํ๊ฒฝ์์๋ง! ์ ํจํ ํด๊ฒฐ๋ฐฉ๋ฒ์ด๋ผ๋ ์ ... ์ผ๋จ ๋๋ ํ ..
ํ๋ก์ ํธ ์ฐ ์์?.. 2์ผ์ฐจ. ์ฌ์ค์ ์ค๋์ด ๋ณธ๊ฒฉ์ ์ธ ์์์ด๋ผ๊ณ ๋ด๋ ๋ฌด๋ฐฉํ ๋ฏ ํ๋ค? ๋ณธ๊ฒฉ์ ์ธ ํ์ ์ ์๋ง์ด ์ด๋ ธ๋ค ๐ ๋ผ์ฐํฐ ์ฐ๊ฒฐ๊ณผ ๋ฐฐํฌ ์ค๋น ์๋ฃ ์ฃผ๋ง๋์ ํ์ด์ง๊ฐ ๋ผ์ฐํฐ ์ฐ๊ฒฐ์ ์ฑ๊ณตํ๊ณ ๊ฐ๋น์์์ ๋๋ฉ์ธ ์ฌ๋ค๊ฐ S3์ ๋ฐฐํฌ๋ ์ฐ์ ์ ์ผ๋ก ํด๋์๋ค. ๐ ๋์ค์ ํ๋ก์ ํธ ๋ง๋ฌด๋ฆฌ ๋๋ฉด ์ ๋ก๋๋ง ํ๋ฉด ๋๋ค~ PR ์ค๋ ํ๋ฃจ๋์ ์ด๋ฃจ์ด์ง PR! PR์ ๋ณด๋ด๊ณ ๋ฐ๋ ๊ฒ์ ์ข ๋ ์ต์ํด์ ธ๊ฐ๋ ํ๋ฃจ ๐ ์ ๋ค์ํฐ ์ปค๋ฐ ์ปจ๋ฒค์ ์ ์จ๋ณด๊ธฐ๋ก ํด์ ์ข ๋ ์ ๋๋ ๋ฌธ๊ตฌ๋ก ์ปค๋ฐํ๊ณ PR์ ๋ณด๋ด๊ณ ์๋ค. ๋์์ธ ๋ณด๊ฐ.. ํ์๋ค๊ณผ ์ํตํ๋ฉฐ ๋์์ธ์ชฝ์ ํ์ ํ ๋ถ๋ถ ๋ณด๊ฐ.. ์ ๋ ๋ฆฌ๋ทฐํ์ด์ง์ ๊ทธ๋ฐ ๋ถ๋ถ์ด ๋ง์๋ค. ๐ค ์์ ์ง์ฒ๋ HTML/CSS ์๊ฐ๋ณด๋ค ๋งํฌ์ ์์ ์ด ๋น ๋ฅด๊ฒ ์งํ๋๊ณ ์๋ ์ค ๐๐ ์ผ๋ถ ํ์ด์ง๋ค์ ๋ฐ์ํ ์์ ๋ ๋์ด..
Today, What I learned? ๋ฐ๋๋ผ JS๋ก SPA๋ฅผ ๊ตฌํํ๋ ํ๋ก์ ํธ ์งํ ์ค!.. ๋ด๋น ํ์ด์ง๋ฅผ ๋งํฌ์ ํ๊ณ , ๋ฒํผ์ ํด๋ฆญํ์ ๋ ์ด๋ฒคํธ ์ผ์ด๋๋ ๊ฒ์ SPA ๋ฐฉ์์ผ๋ก ์ด๋ป๊ฒ ๊ตฌํํ๋๊ฐ.. ๐ค ์ ๋ํด์ ์ข ํค๋งธ๋ ์ง๋ผ ์ค๋์ ์ด๊ฒ์ ๋ํด ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. Cannot read properties of null (reading 'addEventListner') ์ค๋ ๋ง๋ ์๋ฌ. ์ด ์ ์๋ ํ ๋ฒ์ ๋ง๋ ์ ์ด ์๋ ๊ฒ ๊ฐ์ ๋ ์.. ์ผ๋จ ์ ์๋ฌ๋ ์ด๋ฐ ์ด์ ๋ก ๋ฐ์ํ๋ค. html์ด ๋ก๋๋๊ธฐ ์ ์ script๋ฅผ ๋จผ์ ๋ถ๋ฌ์๋ค. ์์ง html์ด ๋ก๋๋๊ธฐ ์ ์ด๊ธฐ ๋๋ฌธ์ addEventListener๋ฅผ ๋ถ์ฌํ DOM์ ์ฐพ์ง ๋ชปํ๋ค. ๊ณ ๋ก null ๊ฐ์ด ๋ฌ๋ค. ์ด ๊ฒฝ์ฐ๋ ๋ณดํต script ํ๊ทธ๋ฅผ ht..
11์ ์ ์งธ ์ฃผ๋ฅผ ๋ณด๋ด๋ฉฐ 11์ 1์ผ์ด ๋ ๊ฒ ์๊ทธ์ ๊ฐ์๋ฐ ์ ๋ฒ์จ 20์ผ์ธ์ง ์๋ฌธ.. ๐ค ๊ธ์์ผ์ ๊ธฐ์ ์ผ๋ก ํ๋ก์ ํธ๊ฐ.. ๋ณธ๊ฒฉ์ ์ผ๋ก ์์๋์๋ค. ๐ ์๋กญ๊ฒ ํ์ตํ๊ฒ ๋ ๊ฐ๋ ๋ค๋ก ํ๋ก์ ํธ๋ฅผ ์งํํด์ผ ํด์ ๊ฑฑ์ ๋ฐ ์ฉ๊ธฐ๋ฐ.. ๊ทธ๋๋ง ํฌ์์์ธ ๊ฒ์ ๋ฐํ์ผ์ด ํ๋ฃจ ๋ฏธ๋ค์ก๋ค๋ ๊ฒ!.. ์ด์ ๋ณ๊ฐ๋ก ํ์ผ์ ์์ฑ ์ค์ธ TIL... TIL ์ด๋ผ๋ ์นดํ ๊ณ ๋ฆฌ๋ก ๋ฒ์ฃผํํ์ง ์๊ณ ๊ทธ๊ฐ ์จ์ค๋ ๋ฐฉ์๋๋ก ๊ฐ๊ฐ ํด๋น ์นดํ ๊ณ ๋ฆฌ์ ์ฐ๋ ๊ฒ์ด ๋ซ์ง ์๋ ๊ณ ๋ฏผ ์ค์ด๋ค. ๐ค ์ผ๋จ ๋ค์์ฃผ๋ถํฐ๋ 1๊ฐ์ ์ฃผ์ ์ ๋ํด ์จ๋ณด๊ธฐ๋ก!.. ๐ Fact ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฅผ ๋๋ฆฌ์ง๋ง ์ด์ด๊ฐ๋ ์ค.. ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ๋ค์ ๊พธ์คํ ํธ๋ ์ค (์์ง 0๋จ๊ณ์ง๋ง~) ๋ฐ๋๋ผ js๋ก SPA ๊ตฌํ ํน๊ฐ์ ๋ค์๋ค. ๊ณต๋ถ๊ธฐ๊ฐ์ด ๋๋๊ณ ํ๋ก์ ํธ๊ฐ ์์ํ๋ค. ์ฃผ๋ง์ด ..
ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉฐ, 1์ผ์ฐจ. ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ธฐ์ด ํ๋ก์ ํธ๊ฐ ์์๋์๋ค. ๐ ์ง๋ ํ๋ก์ ํธ๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ฒ ํ๋ก์ ํธ ๋๋ ๊ธฐํ์ ์ข ๋ ์ธ๋ถ์ ์ผ๋ก ์ ๊ฒฝ์จ์ ํด์ผ๊ฒ ๋ค๊ณ ๋๋ผ๋ฉฐ!.. ํ์๋ค๊ณผ ์ด์ฌํ ํ๋ก์ ํธ์ ๋ผ๋๋ฅผ ๋ถ์๋ค. ์ฃผ์ ? ์ข์ ์์ด๋์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ์๋ถ ๋๋ถ์ ๋น ๋ฅด๊ฒ ์ฃผ์ ๋ฅผ ์ ํ๊ณ ์์ ์งํํ ์ ์์๋ค. ์ด๋ฒ ์ฐ๋ฆฌ์ ํ๋ก์ ํธ๋ช ์ Swivee. (์ข ๋ฉ์ง ์ด๋ฆ์ธ๋ฏ) ๊ทธ๋ด๋ฏํ๊ฒ ๋งํด๋ณด์๋ฉด ์ด์ฉ์๋ค์ ์ ๋ฐ ๋ฆฌ๋ทฐ๋ฅผ ํตํด ์ฌ๋ฌ ๋ธ๋๋์ ์ ๋ฐ๊ณผ ๊ตฌ๋งค์์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๊ฐ ๋์ด์ฃผ๋ ์๋น์ค๋ค. ์งง๊ฒ ์ ๋ฐ ๋ฆฌ๋ทฐ ๋ชจ์ ์๋น์ค๋ผ๊ณ ๋ ์ถ์ฝํ ์ ์๊ฒ ๋ค. AI๋ก ๋ธ๋๋ ์ด๋ฆ๊ณผ ๋ก๊ณ ๋ฅผ ์์ฑํ ์ ์๋ ์๋.. (๋๋ฐ์ ) ๋ค๋ฅธ ํ์ ๋ถ์ ๋น ๋ฅธ ์์นญ์ผ๋ก ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ๋ฉ์ง ์ด๋ฆ์ ๊ฐ์ง๊ฒ ๋์๋ค. ๐ ์์ด์ด ํ๋ ์ ์์ด์ด ํ๋ ์์..
Today, What I learned? ๋ณธ๊ฒฉ์ ์ผ๋ก ํ๋ก์ ํธ๊ฐ ์์๋ ์ฒซ๋ .. ๐ ๊ธฐํ๊ณผ ์์ด์ดํ๋ ์์ ์ ์ก๊ณ ~ ํ๋ก์ธ์ค์ ์ค๋ ๋์ ๋ํ ๊ฐ์๋ฅผ ๋ค์๋ค. ์ฝ์ง ์์ ๊ฐ๋ ์ธ๋ฐ ๋๋ฆ๋๋ก ํ์ด์ ์ ๋ฆฌํด๋ณธ๋ค. ํ๋ก์ธ์ค? ์ด์์ฒด์ ๋ก๋ถํฐ ํ ๋น๋ฐ์ ์์ ์ ๋จ์๋ฅผ ๋งํ๋ค. ์ด ๊ฐ๊ฐ์ ์์ ๋ค์ ์ด์์ฒด์ ๋ก๋ถํฐ ์์คํ ์์์ ํ ๋น๋ฐ๋๋ฐ, ์์์ด๋ผ๋ ๊ฒ์ CPU ์๊ฐ๊ณผ ์คํ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค! ์ฝ๊ฒ ๋งํ๋ฉด ํ๋ก์ธ์ค๋ ์คํ๋๊ณ ์๋ ํ๋์ ํ๋ก๊ทธ๋จ์ด๋ค. ์๋์ ๊ฐ์ด ์๋์ฐ์ ์์ ๊ด๋ฆฌ์๋ ๋งฅ์ ํ์ฑ ์ํ ๋ณด๊ธฐ์์ ์คํ๋๊ณ ์๋ ๋ง์ ํ๋ก์ธ์ค๋ค์ ๋ณผ ์ ์๋ค. ํ๋ก์ธ์ค ์ฃผ์๊ณต๊ฐ ๊ฐ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ์ ๊ฐ๋๋ค. ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ์ ์ด๋ ๊ฒ ๊ตฌ์ฑ๋์ด ์๋ค. Code ..
Comment