Skip to content
Database

毛毛雨

与小雨联系 #

🌐 Connecting with Drizzle

Drizzle ORM 是一个针对 SQL 数据库的 TypeScript ORM,设计时最大化考虑了类型安全。你可以使用他们的 ORM 来连接你的数据库。

1
Install

安装 Drizzle 和相关依赖。

1
npm i drizzle-orm postgres
2
npm i -D drizzle-kit
2
Create your models

创建一个 schema.ts 文件并定义你的模型。

1
import { pgTable, serial, text, varchar } from "drizzle-orm/pg-core";
2
3
export const users = pgTable('users', {
4
id: serial('id').primaryKey(),
5
fullName: text('full_name'),
6
phone: varchar('phone', { length: 256 }),
7
});
3
Connect

使用连接池器连接到你的数据库。

从项目 Connect 面板 中,复制“Shared Pooler”选项的 URI,并将其保存为 DATABASE_URL 环境变量。记得将密码占位符替换为你实际的数据库密码。

在本地,SUPABASE_DB_URL 需要进行调整以适应 Docker 解析器

1
import 'dotenv/config'
2
3
import { drizzle } from 'drizzle-orm/postgres-js'
4
import postgres from 'postgres'
5
6
const databaseUrl = process.env.DATABASE_URL
7
if (!databaseUrl) throw new Error('DATABASE_URL is not set')
8
9
let connectionString = databaseUrl
10
if (connectionString.includes('postgres:postgres@supabase_db_')) {
11
const url = new URL(connectionString)
12
url.hostname = url.hostname.split('_')[1]
13
connectionString = url.href
14
}
15
16
// Disable prefetch as it is not supported for "Transaction" pool mode
17
export const client = postgres(connectionString, { prepare: false })
18
export const db = drizzle(client)