Drizzle <> Cloudflare D1
This guide assumes familiarity with:
- Drizzle๋ฅผ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ธฐ๋ณธ ์ฌํญ
- D1 Database - ์น์ฌ์ดํธ
- D1 ๋๋ผ์ด๋ฒ - ์น์ฌ์ดํธ
**๊ณต์ ์น์ฌ์ดํธ**์ ๋ฐ๋ฅด๋ฉด, D1์ Cloudflare์ ์ฒซ ๋ฒ์งธ ์ฟผ๋ฆฌ ๊ฐ๋ฅํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค.
Drizzle ORM์ Cloudflare D1 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Cloudflare Workers ํ๊ฒฝ์ ์์ ํ ์ง์ํฉ๋๋ค.
์ ํฌ๋ SQL ๋ฐฉ์ธ๊ณผ ๋ฐฉ์ธ๋ณ ๋๋ผ์ด๋ฒ ๋ฐ ๊ตฌ๋ฌธ์ ์ฑํํ๊ณ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ SQLite์ ์ ์ฌํ all, get, values ๋ฐ run ์ฟผ๋ฆฌ ๋ฉ์๋ ๊ตฌ๋ฌธ์ ๋ฐ์ํฉ๋๋ค.
Cloudflare D1 ํ๋ก์ ํธ๋ฅผ ์ค์ ํ๋ ค๋ฉด **๊ณต์ ๋ฌธ์**๋ฅผ ์ฐธ์กฐํ์ธ์.
1๋จ๊ณ - ํจํค์ง ์ค์น
npm
yarn
pnpm
bun
npm i drizzle-orm
npm i -D drizzle-kit
2๋จ๊ณ - ๋๋ผ์ด๋ฒ ์ด๊ธฐํ ๋ฐ ์ฟผ๋ฆฌ ์คํ
D1 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํด wrangler.json ๋๋ wrangler.toml ํ์ผ์ด ํ์ํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ๊ฒ์
๋๋ค:
wrangler.json
wrangler.toml
{
"name": "YOUR_PROJECT_NAME",
"main": "src/index.ts",
"compatibility_date": "2024-09-26",
"compatibility_flags": [
"nodejs_compat"
],
"d1_databases": [
{
"binding": "BINDING_NAME",
"database_name": "YOUR_DB_NAME",
"database_id": "YOUR_DB_ID",
"migrations_dir": "drizzle/migrations"
}
]
}์ฒซ D1 ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ธ์:
import { drizzle } from 'drizzle-orm/d1';
export interface Env {
<BINDING_NAME>: D1Database;
}
export default {
async fetch(request: Request, env: Env) {
const db = drizzle(env.<BINDING_NAME>);
const result = await db.select().from(users).all()
return Response.json(result);
},
};