← Hyperdrive (Postgres & MySQL) / hyperdrive / examples / connect-to-postgres / postgres-drivers-and-libraries
Drizzle ORM
Drizzle ORM ↗ представляет собой лёгкую ORM для TypeScript, ориентированную на типобезопасность. В этом примере показано, как использовать Drizzle ORM с PostgreSQL через Cloudflare Hyperdrive в приложении на Workers.
Предварительные требования
- Аккаунт Cloudflare с доступом к Workers
- База данных PostgreSQL
- A конфигурация Hyperdrive для базы данных PostgreSQL
1. Установка Drizzle
Установите Drizzle ORM и его зависимости, такие как node-postgres ↗ (pg) драйвер:
npm i drizzle-orm pg dotenv
npm i -D drizzle-kit tsx @types/pg @types/nodeДобавьте необходимые флаги совместимости Node.js и привязку Hyperdrive в свой wrangler.jsonc файле:
{
// required for database drivers to function
"compatibility_flags": [
"nodejs_compat"
],
// Set this to today's date
"compatibility_date": "2026-08-28",
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<your-hyperdrive-id-here>"
}
]
}compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-08-28"
[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"2. Настройка Drizzle
2.1. Определение схемы
В Drizzle ORM схема определяется на TypeScript, а не написанием SQL-запросов вручную.
-
Создайте папку
/db/в/src/. -
Создайте
schema.tsфайл. -
В
schema.ts, определитеusersтаблицу, как показано ниже.src/db/schema.ts// src/db/schema.ts import { pgTable, serial, varchar, timestamp } from "drizzle-orm/pg-core"; export const users = pgTable("users", { id: serial("id").primaryKey(), name: varchar("name", { length: 255 }).notNull(), email: varchar("email", { length: 255 }).notNull().unique(), createdAt: timestamp("created_at").defaultNow(), });
2.2. Подключение Drizzle ORM к базе данных через Hyperdrive
Используйте свою конфигурацию Hyperdrive для базы данных при работе с Drizzle ORM.
Заполните ваш index.ts файл, как показано ниже.
// src/index.ts
import { Client } from "pg";
import { drizzle } from "drizzle-orm/node-postgres";
import { users } from "./db/schema";
export interface Env {
HYPERDRIVE: Hyperdrive;
}
export default {
async fetch(request, env, ctx): Promise<Response> {
// Create a new client instance for each request.
const client = new Client({
connectionString: env.HYPERDRIVE.connectionString,
});
// Connect to the database
await client.connect();
// Create the Drizzle client with the node-postgres connection
const db = drizzle(client);
// Sample query to get all users
const allUsers = await db.select().from(users);
return Response.json(allUsers);
},
} satisfies ExportedHandler<Env>;2.3. Настройка Drizzle-Kit для миграций (необязательно)
С помощью Drizzle Kit CLI можно генерировать и выполнять SQL миграции базы данных на основе вашей схемы. См. Документация Drizzle ORM ↗ с дополнительными рекомендациями.
-
Создайте
.envфайл в корневой папке проекта и добавьте в него строку подключения к базе данных. CLI Drizzle Kit будет использовать эту строку подключения для создания и применения миграций..env# .env # Replace with your direct database connection string DATABASE_URL='postgres://user:[email protected]/database-name' -
Создайте
drizzle.config.tsфайл в корневой папке проекта, чтобы настроить Drizzle Kit, и добавьте в него следующее содержимое:drizzle.config.ts// drizzle.config.ts import "dotenv/config"; import { defineConfig } from "drizzle-kit"; export default defineConfig({ out: "./drizzle", schema: "./src/db/schema.ts", dialect: "postgresql", dbCredentials: { url: process.env.DATABASE_URL!, }, }); -
Создайте файл миграции для базы данных на основе файлов схемы и примените миграции к базе данных.
Выполните следующие две команды:
npx drizzle-kit generateNo config path provided, using default 'drizzle.config.ts' Reading config file 'drizzle.config.ts' 1 tables users 4 columns 0 indexes 0 fks [✓] Your SQL migration file ➜ drizzle/0000_mysterious_queen_noir.sql 🚀npx drizzle-kit migrateNo config path provided, using default 'drizzle.config.ts' Reading config file 'drizzle.config.ts' Using 'postgres' driver for database querying
3. Развертывание Worker
Разверните Worker.
npx wrangler deployСледующие шаги
- Подробнее о Как работает Hyperdrive.
- См. руководство по устранению неполадок чтобы отладить типичные проблемы.
- Узнайте больше о других варианты хранения доступен для Cloudflare Workers.