Firebase๋
Firebase๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ซํผ์ด๋ค. ๊ฐ๋ฐ์๊ฐ ์ง์ ์๋ฒ๋ฅผ ๊ตฌ์ถํ ํ์ ์์ด ์ฆ, ์๋ฒ๋ฆฌ์ค๋ก ๋น ๋ฅด๊ฒ ์น์ฑ์ ๊ฐ๋ฐํ ์ ์๋๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ์ง์ํ๋ค. ๋ํ์ ์ผ๋ก๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ณตํ๋๋ฐ, ์ด๋ฅผ ์ฌ์ฉํด ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ์ค์๊ฐ ์๋น์ค๋ก ๊ตฌ์ถํ ์ ์๋ค.
์ด๋ฒ ํฌ์คํ ์ ๊ทธ ์ฌ์ ์์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ Mock ๋ฐ์ดํฐ๋ฅผ Firebase์ importํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๊ดํ ๊ฒ์ด๋ค.
๐ ์ด๋ ๊ฒ importํ๊ฒ ๋๋ฉด ๊ธฐ์กด ๋ฐ์ดํฐ๋ ๋ฎ์ด์์์ ธ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด ๋ฐ์ดํฐ์ ๋๊ธฐํ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ ์๋๋ค!
1. CSV โ JSON ๋ณํ
Firebase ๋ฐ์ดํฐ๋ฒ ์ด์ค์ importํ๊ธฐ ์ํด์ JSON ํ์ผ์ด ํ์ํ๋ค. ๋ฐ์ดํฐ์ ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ผ์ผ์ด JSON ํ์์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๋ฏธ์น ์ง์ ๊ฐ๊น๋ค. ๋คํํ ์ฐ๋ฆฌ์๊ฒ๋ CSVJSON์ด๋ผ๋ ๋ฉ์ง ์ฌ์ดํธ๊ฐ ์๋ค. ๋ณํ ๋ฐฉ๋ฒ๋ ์์ฃผ ๊ฐ๋จํ๋ค.
- CSV ํ์ผ์ ์ด๊ณ ์ ์ฒด ๋ณต์ฌ(CTRL + A)
- CSVJSON์ ๋ถ์ฌ๋ฃ๊ธฐ
- Convert
- Download
2. Realtime Database
Realtime Database์ importํ๋ ๋ฐฉ๋ฒ์ ์ ๋ง ๊ฐ๋จํ๋ค.
- ์ผ๋ฐฅ ๋ฉ๋ด - import JSON
- Browse - JSON ํ์ผ ์ ๋ก๋
- Import
3. Firestore Database
๋ฐ๋ฉด์ Firestore Database๋ Realtime Database์ ๋ฌ๋ฆฌ ํ์ด์ง์ import/exportํ๋ ๋ฉ๋ด๊ฐ ์๊ธฐ ๋๋ฌธ์ node-firestore-import-export ํจํค์ง๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก Node.js ์ค์น์ npm ์ฌ์ฉ์ ๋ํ ์ดํด๊ฐ ๋์ด์์ด์ผ ํ๋ค.
a) private key ์์ฑ
Firestore์ import/export๋ฅผ ํ๊ธฐ ์ํด์ private key ๊ฐ์ด ํ์ํ๋ค. ์๋์ ๊ณผ์ ์ ๋ฐ๋ฅด๋ฉด private key ๊ฐ์ด ํฌํจ๋์ด ์๋ JSON ํ์ผ์ด ์์ฑ๋๋ค.
- Project settings - Service accounts
- Generate new private key
- Generate key
b) JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์
Realtime Database๋ ๋จ์ JSON ํธ๋ฆฌ ํ์์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด์ง๋ง, Firebase Database๋ ์ปฌ๋ ์ ํ์์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค. ๋ฐ๋ผ์ ์์์ ๋ณํํ JSON ํ์ผ์ ์ปฌ๋ ์ ๊ตฌ์กฐ์ ๋ง๊ฒ ์์ ํด์ผ ํ๋ค.
Firebase์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ NoSQL๊ธฐ๋ฐ์ด๊ณ , NoSQL์ Document ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค. ์ด๋ Database - Collection - Document - Field
๊ณ์ธต์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ, RDBMS์ ๋ํ ์ดํด๊ฐ ์๋ค๋ฉด ์๋์ ์ฌ์ง์ผ๋ก ์ฝ๊ฒ ๋น๊ต, ์ดํดํ ์ ์์ ๊ฒ์ด๋ค.
์ง์ Firestore์ ์ปฌ๋ ์ ์ ์์ฑํ๋ค. TABLE_TEST๋ผ๋ Collection(ํ ์ด๋ธ)์ด ์๊ณ , ๊ทธ ์์ ํ๋์ Document(ํ)๊ฐ ์์ผ๋ฉฐ, ๊ทธ ์์๋ name์ด๋ผ๋ Field(์ปฌ๋ผ)๊ฐ ์กด์ฌํ๋ค. NoSQL์ ๋์ ์คํค๋ง๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ RDBMS์ ๋ฌ๋ฆฌ Document๋ง๋ค ๋ค๋ฅธ Field๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ(๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ๋ชจ๋ ์ปฌ๋ผ์ ์ ํ ํด๋์ ํ์๊ฐ ์๋ค), Field์ ๊ฐ์ผ๋ก ๋ Collection์ ๊ฐ์ง ์ ์๋ค!
Firestore์ ๊ตฌ์กฐ๊ฐ ์ด๋ ๊ธฐ ๋๋ฌธ์ ์์ ๋ง๋ค์๋ JSONํ์ผ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ๋๋ค. ๊ทธ๋์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ์ค์ผ ํ๋ค. ๊ธฐ์กด์ JSON ํ์ผ์๋ ์๋์ฒ๋ผ ์ฌ๋ฌ Document(ํ)๋ค์ด ๋ฐฐ์ด ๊ตฌ์กฐ๋ก ๋ด๊ฒจ์์ ๊ฒ์ด๋ค.
[
{
"id": 0,
"name": "dnb",
"age": 10
},
{
"id": 1,
"name": "qer",
"age": 20
}
]
์ฌ๊ธฐ์ Collection(ํ ์ด๋ธ)๋ช ์ ์ถ๊ฐํด์ฃผ์. __collections__ ๊ฐ์ฒด ์์ Collection(ํ ์ด๋ธ) ํค๋ฅผ ๋ช ์ํ๊ณ , ๊ทธ ๊ฐ์ผ๋ก Documents(ํ) ๋ฐฐ์ด์ ๋ด์์ค๋ค. ์๋์ฒ๋ผ ์์ฑํ๋ฉด ๋ ๊ฐ์ Documents(ํ)์ ๊ฐ์ง TABLE_TEST๋ผ๋ Collection(ํ ์ด๋ธ)์ด ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.
{
"__collections__": {
"TABLE_TEST": [
{
"id": 0,
"name": "dnb",
"age": 10
},
{
"id": 1,
"name": "qer",
"age": 20
}
]
}
}
c) node-firestore-import-export
๋ง์ง๋ง์ผ๋ก node-firestore-import-export๋ฅผ ์ฌ์ฉํด importํ๋ ์์ ์ด๋ค. ๋จผ์ ํจํค์ง๋ฅผ ์ ์ญ์ ์ค์นํ๋ค.
# npm
npm install -g node-firestore-import-export
# yarn
yarn global add node-firestore-import-export
๊ทธ๋ฆฌ๊ณ cmd์ฐฝ์์ JSONํ์ผ๋ค์ด ์์นํ๊ณ ์๋ ํด๋๋ก ์ด๋ํ ํ, ์๋์ ๊ฐ์ด ์
๋ ฅํ๋ค. ์ค๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ฎ์ด์์์ง๋ค๋ ๊ฒฝ๊ณ ์ ํจ๊ป ์งํํ๊ฒ ๋๋ ์ง๋ฌธ์ด ๋์ค๋๋ฐ y
๋ฅผ ์
๋ ฅํ๊ณ ๊ณ์ํ๋ค.
firestore-import --accountCredentials <private_keyํ์ผ๋ช
>.json --backupFile <dataํ์ผ๋ช
>.json
cmd์ฐฝ์ ์ด๋ก์ All done
๋ฌธ๊ตฌ๋ฅผ ํ์ธํ๋ฉด import ์๋ฃ!
'๐ป๐ > ๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] Web APIs์ ๋ํด (0) | 2021.08.28 |
---|---|
[JS] ๋ฐฐ์ด APIs: splice์ slice์ ๋น๊ต (0) | 2021.08.19 |
[React] Webpack์ผ๋ก ๊ตฌ์ถํ React ํ๋ก์ ํธ์์ ํ๊ฒฝ ๋ณ์(.env) ์ฌ์ฉํ๊ธฐ (1) | 2021.08.19 |
[Git] ๊นํ๋ธ ์ธ์ฆ personal access token์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ(git config credential ์ค์ ์ฃผ์) (0) | 2021.08.15 |
[React] resize ์ด๋ฒคํธ ๋ค๋ฃจ๊ธฐ (8) | 2021.08.11 |