Expo SQLite
New database
Meet Drizzle
Get started
Drizzle์ Expo ์์ํ๊ธฐ
This guide assumes familiarity with:
- Expo SQLite - SQLite API๋ฅผ ํตํด ์ฟผ๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ - ์ฌ๊ธฐ์ ์ฝ์ด๋ณด๊ธฐ
1๋จ๊ณ - Expo ํ
ํ๋ฆฟ์ผ๋ก ํ๋ก์ ํธ ์ค์ ํ๊ธฐ
์ด ํ
ํ๋ฆฟ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ํ์ผ ๊ตฌ์กฐ
ํ
ํ๋ฆฟ์ ์ค์นํ๊ณ db
ํด๋๋ฅผ ์ถ๊ฐํ ํ, ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค. db/schema.ts
ํ์ผ์๋ Drizzle ํ
์ด๋ธ ์ ์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. drizzle
ํด๋์๋ SQL ๋ง์ด๊ทธ๋ ์ด์
ํ์ผ๊ณผ ์ค๋
์ท์ด ๋ค์ด ์์ต๋๋ค.
2๋จ๊ณ - expo-sqlite ํจํค์ง ์ค์น
์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด expo-sqlite
ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. ์ด ํจํค์ง๋ Expo ํ๋ก์ ํธ์์ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
3๋จ๊ณ - ํ์ํ ํจํค์ง ์ค์นํ๊ธฐ
์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ drizzle-orm
๊ณผ drizzle-kit
ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. drizzle-kit
์ ๊ฐ๋ฐ ์์กด์ฑ์ผ๋ก ์ค์นํฉ๋๋ค.
4๋จ๊ณ - Drizzle ORM์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ธฐ
๋ฃจํธ ๋๋ ํ ๋ฆฌ์ App.tsx
ํ์ผ์ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ด๊ธฐํํฉ๋๋ค:
์ด ์ฝ๋๋ Expo SQLite๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์ ์ด๊ณ , Drizzle ORM์ ์ด๊ธฐํํฉ๋๋ค. db
๊ฐ์ฒด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ์ํํ ์ ์์ต๋๋ค.
4๋จ๊ณ - ํ
์ด๋ธ ์์ฑํ๊ธฐ
db
๋๋ ํ ๋ฆฌ์ schema.ts
ํ์ผ์ ์์ฑํ๊ณ ํ
์ด๋ธ์ ์ ์ธํฉ๋๋ค:
์ด ์ฝ๋๋ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค์ users_table
์ด๋ผ๋ ํ
์ด๋ธ์ ์ ์ํฉ๋๋ค. ํ
์ด๋ธ์ id
, name
, age
, email
์ปฌ๋ผ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ ์ปฌ๋ผ์ ํ์
๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
5๋จ๊ณ - Drizzle ์ค์ ํ์ผ ์ค์ ํ๊ธฐ
Drizzle ์ค์ ํ์ผ - Drizzle Kit์์ ์ฌ์ฉํ๋ ์ค์ ํ์ผ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด, ๋ง์ด๊ทธ๋ ์ด์
ํด๋, ์คํค๋ง ํ์ผ ๋ฑ์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
ํ๋ก์ ํธ ๋ฃจํธ์ drizzle.config.ts
ํ์ผ์ ์์ฑํ๊ณ ๋ค์ ๋ด์ฉ์ ์ถ๊ฐํ์ธ์:
์ด ์ค์ ํ์ผ์ Drizzle Kit์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. dialect
๋ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข
๋ฅ๋ฅผ, driver
๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ๋ ์ฌ์ฉํ ๋๋ผ์ด๋ฒ๋ฅผ ์ง์ ํฉ๋๋ค. schema
๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๊ฐ ์ ์๋ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ, out
์ ๋ง์ด๊ทธ๋ ์ด์
ํ์ผ์ด ์ ์ฅ๋ ๊ฒฝ๋ก๋ฅผ ๋ํ๋
๋๋ค.
6๋จ๊ณ - metro
์ค์ ํ๊ธฐ
๋ฃจํธ ํด๋์ metro.config.js
ํ์ผ์ ์์ฑํ๊ณ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค:
์ด ์ฝ๋๋ Expo์ ๊ธฐ๋ณธ Metro ์ค์ ์ ๊ฐ์ ธ์์ SQL ํ์ผ ํ์ฅ์๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ค์ ์ ํ์ฅํฉ๋๋ค.
7๋จ๊ณ - babel
์ค์ ์
๋ฐ์ดํธ
8๋จ๊ณ - ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ ์ฌํญ ์ ์ฉํ๊ธฐ
Expo๋ฅผ ์ฌ์ฉํ ๋๋ drizzle-kit generate
์ปค๋งจ๋๋ฅผ ํตํด ๋ง์ด๊ทธ๋ ์ด์
์ ์์ฑํ ํ, drizzle-orm
์ migrate()
ํจ์๋ฅผ ์ฌ์ฉํด ๋ฐํ์์ ์ ์ฉํด์ผ ํฉ๋๋ค.
๋ง์ด๊ทธ๋ ์ด์
์์ฑํ๊ธฐ:
9๋จ๊ณ - ๋ง์ด๊ทธ๋ ์ด์
์ ์ฉ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌํ๊ธฐ:
App.tsx ํ์ผ์ ๋ง์ด๊ทธ๋ ์ด์
๊ณผ ์ฌ์ฉ์ ์์ฑ, ์ฝ๊ธฐ, ์
๋ฐ์ดํธ, ์ญ์ ๋ฅผ ์ํ ์ฟผ๋ฆฌ๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ด ์ฝ๋๋ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ๋จํ ์์ ์
๋๋ค. ๋ง์ด๊ทธ๋ ์ด์
์ ์ ์ฉํ๊ณ , ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑ, ์ญ์ , ์กฐํํ๋ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์์ต๋๋ค.
10๋จ๊ณ - Expo ์ฑ ์ฌ์ ๋น๋ ๋ฐ ์คํ