Drizzleλ‘ λ°μ΄ν°λ² μ΄μ€ μ°κ²°νκΈ°
Drizzle ORMμ λ°μ΄ν°λ² μ΄μ€ λλΌμ΄λ²λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μ SQL 쿼리λ₯Ό μ€νν©λλ€.
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 쿼리
ββββββββββββββββββββββββ
β Κ
select count(*) from users -β β
β β- [{ count: 0 }]
v β
βββββββββββββββββββββββ
β node-postgres β <--- λ°μ΄ν°λ² μ΄μ€ λλΌμ΄λ²
βββββββββββββββββββββββ
β Κ
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;
// μ μ½λλ μλμ λμΌν©λλ€.
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λ μ€κ³μ λͺ¨λ μ£μ§ λλ μλ²λ¦¬μ€ λ°νμκ³Ό κΈ°λ³Έμ μΌλ‘ νΈνλ©λλ€. μλ²λ¦¬μ€ λ°μ΄ν°λ² μ΄μ€μ μ κ·Όν΄μΌ ν λλ Drizzleκ° λμμ€λλ€.
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(); // <--- λ©λͺ¨λ¦¬ λ΄ λ°μ΄ν°λ² μ΄μ€ μμ±
const db = drizzle("./sqlite.db");
import { drizzle } from "drizzle-orm/expo-sqlite";
import { openDatabaseSync } from "expo-sqlite/next";
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
ββββ βββββββββ βββββββββββββββββββββββββββββββββββββββββββββββ ββββββ
Κ Κ Κ Κ
μν -β β β- νΈμ€νΈλͺ
β- λ°μ΄ν°λ² μ΄μ€
β
β- λΉλ°λ²νΈ
μ μμ λ PostgreSQL λ°μ΄ν°λ² μ΄μ€ μ°κ²° URLμ 보μ¬μ€λλ€. κ° λΆλΆμ λ€μκ³Ό κ°μ μλ―Έλ₯Ό κ°μ§λλ€:
postgresql://
: λ°μ΄ν°λ² μ΄μ€ νλ‘ν μ½alex
: λ°μ΄ν°λ² μ΄μ€ μ μ μν (role)AbC123dEf
: λ°μ΄ν°λ² μ΄μ€ μ μ λΉλ°λ²νΈep-cool-darkness-123456.us-east-2.aws.neon.tech
: λ°μ΄ν°λ² μ΄μ€ νΈμ€νΈλͺdbname
: μ°κ²°ν λ°μ΄ν°λ² μ΄μ€ μ΄λ¦
μ΄ νμμ λ€μν λ°μ΄ν°λ² μ΄μ€ μμ€ν μμ μ μ¬νκ² μ¬μ©λ©λλ€. μ¬λ¬λΆμ΄ μ¬μ©νλ λ°μ΄ν°λ² μ΄μ€μ λ§κ² URLμ ꡬμ±νλ©΄ λ©λλ€.
λ€μ λ¨κ³
κ° λλΌμ΄λ²λ³ λ¬Έμλ₯Ό νμΈν΄ 보μΈμ.
PostgreSQL λλΌμ΄λ²
MySQL λλΌμ΄λ²
SQLite λλΌμ΄λ²
λ€μ΄ν°λΈ SQLite
κΈ°ν