Drizzle <> Supabase

This guide assumes familiarity with:

**공식 웹사이트**에 따르면, Supabase는 최소한의 설정으로 안전하고 성능이 뛰어난 Postgres 백엔드를 구축하기 위한 오픈 소스 Firebase 대안입니다.

공식 Supabase + Drizzle 문서를 확인해 보세요.

1단계 - 패키지 설치

npm
yarn
pnpm
bun
npm i drizzle-orm postgres
npm i -D drizzle-kit

2단계 - 드라이버 초기화 및 쿼리 실행

index.ts
import { drizzle } from 'drizzle-orm/postgres-js'

const db = drizzle(process.env.DATABASE_URL);

const allUsers = await db.select().from(...);

기존 드라이버를 사용하려면 다음과 같이 작성합니다:

index.ts
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'

const client = postgres(process.env.DATABASE_URL)
const db = drizzle({ client });

const allUsers = await db.select().from(...);

Supabase를 통해 연결 풀링을 사용하고 “Transaction” 풀 모드를 활성화한 경우, 준비된 문장(prepared statements)이 지원되지 않으므로 prepare를 비활성화해야 합니다.

index.ts
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'

// "Transaction" 풀 모드에서는 prefetch를 지원하지 않으므로 비활성화
const client = postgres(process.env.DATABASE_URL, { prepare: false })
const db = drizzle({ client });

const allUsers = await db.select().from(...);

서버리스 환경에서는 Connection Pooler를 사용하고, 장기 실행 서버에서는 Direct Connection을 사용하여 데이터베이스에 연결합니다.

다음 단계는 무엇인가요?