bun add drizzle-orm postgres dotenvbun add -D drizzle-kit tsx
2단계 - 연결 변수 설정하기
프로젝트 루트 디렉토리에 .env 파일을 생성하고 데이터베이스 연결 변수를 추가하세요:
DATABASE_URL=
3단계 - Drizzle ORM을 데이터베이스에 연결하기
src/db 디렉토리에 index.ts 파일을 생성하고 데이터베이스 연결을 초기화해 보겠습니다.
import { drizzle } from 'drizzle-orm'async function main() { const db = drizzle('postgres-js', process.env.DATABASE_URL);}main();
동기 연결이 필요한 경우, 드라이버 연결을 지정하고 Drizzle 인스턴스에 전달하는 추가 연결 API를 사용할 수 있습니다.
import { drizzle } from 'drizzle-orm/postgres-js'import postgres from 'postgres'async function main() { const client = postgres(process.env.DATABASE_URL) const db = drizzle({ client });}main();
팁
Supabase를 통해 연결 풀링을 사용하고 “Transaction” 풀 모드를 활성화한 경우, 준비된 문장(prepared statements)이 지원되지 않으므로 prepare를 꺼야 합니다.
import { drizzle } from 'drizzle-orm/postgres-js'import postgres from 'postgres'async function main() { // "Transaction" 풀 모드에서는 prefetch를 지원하지 않으므로 비활성화 const client = postgres(process.env.DATABASE_URL, { prepare: false }) const db = drizzle({ client });}main();
drizzle-kit push 커맨드를 사용하면 데이터베이스에 직접 변경 사항을 적용할 수 있습니다. 이 방법은 로컬 개발 환경에서 새로운 스키마 디자인이나 수정 사항을 빠르게 테스트할 때 유용합니다. 마이그레이션 파일을 관리할 필요 없이 빠르게 반복 작업을 진행할 수 있습니다:
src/index.ts 파일을 사용자 생성, 조회, 수정, 삭제 쿼리로 업데이트해 보겠습니다.
import 'dotenv/config';import { drizzle } from 'drizzle-orm/postgres-js';import { eq } from 'drizzle-orm';import { usersTable } from './db/schema';const db = drizzle(process.env.DATABASE_URL!);async function main() { // 새로운 사용자 데이터 생성 const user: typeof usersTable.$inferInsert = { name: 'John', age: 30, email: 'john@example.com', }; // 사용자 생성 await db.insert(usersTable).values(user); console.log('새로운 사용자가 생성되었습니다!'); // 모든 사용자 조회 const users = await db.select().from(usersTable); console.log('데이터베이스에서 모든 사용자를 가져옵니다: ', users); /* const users: { id: number; name: string; age: number; email: string; }[] */ // 사용자 정보 업데이트 await db .update(usersTable) .set({ age: 31, }) .where(eq(usersTable.email, user.email)); console.log('사용자 정보가 업데이트되었습니다!'); // 사용자 삭제 await db.delete(usersTable).where(eq(usersTable.email, user.email)); console.log('사용자가 삭제되었습니다!');}main();
8단계 - index.ts 파일 실행하기
TypeScript 파일을 실행하는 방법은 여러 가지가 있지만, 여기서는 tsx를 사용하는 방법을 살펴보겠습니다.
이미 tsx를 설치했으므로, 이제 쿼리를 실행할 수 있습니다.
index.ts 스크립트 실행하기
<Npx> tsx src/index.ts</Npx>
팁
TypeScript 파일을 실행할 때 bun을 사용하는 것을 추천합니다. bun을 사용하면 프로젝트가 CommonJS(CJS), ECMAScript Modules(ESM) 또는 다른 모듈 형식으로 구성되어 있더라도 추가 설정 없이 스크립트를 실행할 수 있습니다. bun으로 스크립트를 실행하려면 다음 명령어를 사용하세요: