Drizzleμ μ¬μ©ν λ°μ΄ν°λ² μ΄μ€ μ°κ²°
Drizzle ORMμ λ°μ΄ν°λ² μ΄μ€ λλΌμ΄λ²λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μμ SQL 쿼리λ₯Ό μ€νν©λλ€.
index.ts
schema.ts
import { drizzle } from "drizzle-orm/node-postgres"
import { users } from "./schema"
const db = drizzle(process.env.DATABASE_URL);
const usersCount = await db.$count(users); ββββββββββββββββββββββββ
β db.$count(users) β <--- drizzle query
ββββββββββββββββββββββββ
β Κ
select count(*) from users -β β
β β- [{ count: 0 }]
v β
βββββββββββββββββββββββ
β node-postgres β <--- database driver
βββββββββββββββββββββββ
β Κ
01101000 01100101 01111001 -β β
β β- 01110011 01110101 01110000
v β
ββββββββββββββββββββββ
β Database β
ββββββββββββββββββββββλ΄λΆμ μΌλ‘ Drizzleμ node-postgres λλΌμ΄λ² μΈμ€ν΄μ€λ₯Ό μμ±νλ©°, νμν κ²½μ° db.$clientλ₯Ό ν΅ν΄ μ κ·Όν μ μμ΅λλ€
import { drizzle } from "drizzle-orm/node-postgres"
const db = drizzle(process.env.DATABASE_URL);
const pool = db.$client;// above is equivalent to
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
});
const db = drizzle({ client: pool });Drizzleμ μ€κ³μ λͺ¨λ μ£μ§ λλ μλ²λ¦¬μ€ λ°νμκ³Ό κΈ°λ³Έμ μΌλ‘ νΈνλλ©°, μλ²λ¦¬μ€ λ°μ΄ν°λ² μ΄μ€μ μ κ·Όν΄μΌ ν λλ§λ€ μ§μν©λλ€
Neon HTTP
Neon with websockets
Vercel Postgres
PlanetScale HTTP
Cloudflare d1
import { drizzle } from "drizzle-orm/neon-http";
const db = drizzle(process.env.DATABASE_URL);λ¬Όλ‘ , Bun SQLiteλ Expo SQLiteμ κ°μ λ°νμ μ μ© λλΌμ΄λ²λ μ§μν©λλ€:
import { drizzle } from "drizzle-orm/bun-sqlite"
const db = drizzle(); // <--- will create an in-memory db
const db = drizzle("./sqlite.db");import { drizzle } from "drizzle-orm/expo-sqlite";
import { openDatabaseSync } from "expo-sqlite";
const expo = openDatabaseSync("db.db");
const db = drizzle(expo);λ°μ΄ν°λ² μ΄μ€ μ°κ²° URL
λ°μ΄ν°λ² μ΄μ€ μ°κ²° URL κ°λ μ μ΅μνμ§ μμ κ²½μ°λ₯Ό μν΄ μ€λͺ ν©λλ€
postgresql://alex:AbC123dEf@ep-cool-darkness-123456.us-east-2.aws.neon.tech/dbname
ββββ βββββββββ βββββββββββββββββββββββββββββββββββββββββββββββ ββββββ
Κ Κ Κ Κ
role -β β β- hostname β- database
β
β- password
λ€μ λ¨κ³
κ° λλΌμ΄λ²λ³ λ¬Έμλ₯Ό μμ λ‘κ² νμΈνμΈμ
PostgreSQL drivers
MySQL drivers
SQLite drivers
Native SQLite
Others