INTEGRITY Dokumentace

Drizzle ORM

Drizzle ORM ↗ je odlehčené ORM pro TypeScript zaměřené na typovou bezpečnost. Tento příklad ukazuje, jak použít Drizzle ORM s MySQL prostřednictvím Cloudflare Hyperdrive v aplikaci Workers.

Předpoklady

1. Nainstalujte Drizzle

Nainstalujte Drizzle ORM a jeho závislosti, jako je mysql2 ↗ ovladač:

# mysql2 v3.13.0 or later is required
npm i drizzle-orm mysql2 dotenv
npm i -D drizzle-kit tsx @types/node

Přidejte potřebné příznaky kompatibility s Node.js a vazbu Hyperdrive do svého wrangler.jsonc soubor:

{
	// 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. Nakonfigurujte Drizzle

2.1. Definujte schéma

S Drizzle ORM definujeme schéma v TypeScriptu, a nikoli psaním čistého SQL.

  1. Vytvořte složku /db/ v /src/.

  2. Vytvořte schema.ts .

  3. V schema.ts, definujte users tabulku, jak je znázorněno níže.

    src/db/schema.ts
    // src/schema.ts
    import { mysqlTable, int, varchar, timestamp } from "drizzle-orm/mysql-core";
    
    export const users = mysqlTable("users", {
    	id: int("id").primaryKey().autoincrement(),
    	name: varchar("name", { length: 255 }).notNull(),
    	email: varchar("email", { length: 255 }).notNull().unique(),
    	createdAt: timestamp("created_at").defaultNow(),
    });

2.2. Připojte Drizzle ORM k databázi pomocí Hyperdrive

Při použití Drizzle ORM pro svou databázi použijte přihlašovací údaje ze své konfigurace Hyperdrive.

Naplňte svůj index.ts soubor, jak je znázorněno níže.

src/index.ts
// src/index.ts

import { drizzle } from "drizzle-orm/mysql2";
import { createConnection } from "mysql2/promise";
import { users } from "./db/schema";

export interface Env {
	HYPERDRIVE: Hyperdrive;
  }

export default {
	async fetch(request, env, ctx): Promise<Response> {
		// Create a connection using the mysql2 driver with the Hyperdrive credentials (only accessible from your Worker).
		const connection = await createConnection({
			host: env.HYPERDRIVE.host,
			user: env.HYPERDRIVE.user,
			password: env.HYPERDRIVE.password,
			database: env.HYPERDRIVE.database,
			port: env.HYPERDRIVE.port,

			// Required to enable mysql2 compatibility for Workers
			disableEval: true,
		});

		// Create the Drizzle client with the mysql2 driver connection
		const db = drizzle(connection);

		// Sample query to get all users
		const allUsers = await db.select().from(users);

		return Response.json(allUsers);
	},
} satisfies ExportedHandler<Env>;

2.3. Nakonfigurujte Drizzle-Kit pro migrace (volitelné)

Pomocí Drizzle Kit CLI můžete na základě svého schématu generovat a spouštět SQL migrace ve vaší databázi. Viz Dokumentace Drizzle ORM ↗ další pokyny.

  1. Vytvořte .env soubor v kořenové složce projektu a přidejte připojovací řetězec k databázi. Rozhraní příkazové řádky Drizzle Kit tento připojovací řetězec použije k vytvoření a aplikování migrací.

    .env
    # .env
    # Replace with your direct database connection string
    DATABASE_URL='mysql://user:[email protected]/database-name'
  2. Vytvořte drizzle.config.ts soubor v kořenové složce projektu, abyste nakonfigurovali Drizzle Kit, a přidejte následující obsah:

    drizzle.config.ts
    import 'dotenv/config';
    import { defineConfig } from 'drizzle-kit';
    export default defineConfig({
    out: './drizzle',
    schema: './src/db/schema.ts',
    dialect: 'mysql',
    dbCredentials: {
    url: process.env.DATABASE_URL!,
      },
    });
  3. Vygenerujte migrační soubor pro databázi podle svých souborů schématu a použijte migrace na databázi.

    npx drizzle-kit generate
    No config path provided, using default 'drizzle.config.ts'
    Reading config file 'drizzle.config.ts'
    Reading schema files:
    /src/db/schema.ts
    
    1 tables
    users 4 columns 0 indexes 0 fks
    
    [✓] Your SQL migration file ➜ drizzle/0000_daffy_rhodey.sql 🚀
    npx drizzle-kit migrate
    No config path provided, using default 'drizzle.config.ts'
    Reading config file 'drizzle.config.ts'

3. Nasaďte svůj Worker

Nasaďte svůj Worker.

npx wrangler deploy

Další kroky