← Cloudflare D1 / d1 / tutorials
Dotazování D1 pomocí Prisma ORM
Co je Prisma ORM?
Prisma ORM ↗ je ORM nové generace pro JavaScript a TypeScript, který díky intuitivnímu datovému modelu, automatizovaným migracím, typové bezpečnosti a automatickému doplňování posouvá práci s databázemi na novou úroveň.
Více o Prisma ORM se dozvíte v Dokumentace Prisma ↗.
Dotazování D1 z Cloudflare Workeru pomocí Prisma ORM
Tento tutoriál ukazuje, jak od začátku nastavit a nasadit Cloudflare Worker, který přistupuje k databázi D1.
Rychlý start
Pokud chcete kroky přeskočit a rychle začít, vyberte Deploy to Cloudflare níže.
Tím se vytvoří repozitář ve vašem účtu GitHub a aplikace se nasadí na Cloudflare Workers. Tuto možnost použijte, pokud Cloudflare Workers dobře znáte a chcete přeskočit podrobné pokyny krok za krokem.
Pokud s Cloudflare Workers teprve začínáte, můžete kroky projít ručně.
Předpoklady
Node.js↗ anpm↗ nainstalovaný na vašem počítači.- A účet Cloudflare ↗.
1. Vytvořte Cloudflare Worker
Otevřete terminál a spuštěním následujícího příkazu vytvořte Cloudflare Worker pomocí Cloudflare hello-world ↗ šablonu:
npm create cloudflare@latest prisma-d1-example -- --type hello-worldV terminálu se vám zobrazí řada otázek týkajících se vašeho projektu:
- Odpovězte
yesna používání TypeScriptu. - Odpovězte
nok nasazení vašeho Workeru.
2. Inicializujte Prisma ORM
Pro nastavení Prisma ORM přejděte do adresáře projektu a nainstalujte Prisma CLI:
cd prisma-d1-examplenpm i -D prismaDále nainstalujte balíček Prisma Client a ovladač adaptéru pro D1:
npm i @prisma/client @prisma/adapter-d1Nakonec pomocí následujícího příkazu vygenerujte soubory potřebné pro Prisma ORM:
npx prisma init --datasource-provider sqliteVýše uvedený příkaz:
- Vytvoří nový adresář s názvem
prismakterý obsahuje váš Prisma schéma ↗ . - Vytvoří
.envsoubor, který slouží ke konfiguraci proměnných prostředí, jež bude číst Prisma CLI.
V tomto tutoriálu nebudete potřebovat .env soubor, protože propojení mezi Prisma ORM a D1 proběhne přes binding. Následující kroky vás provedou nastavením této vazby.
Protože použijete adaptér ovladače ↗ funkci, která je momentálně v Preview, ji musíte explicitně povolit pomocí previewFeatures pole v generator blok.
Otevřete schema.prisma soubor a upravte generator blok tak, aby odpovídal následujícímu:
generator client {
provider = "prisma-client-js"
output = "../src/generated/prisma"
previewFeatures = ["driverAdapters"]
}3. Vytvořte svou databázi D1
V tomto kroku nastavíte databázi D1. Databázi D1 můžete vytvořit přes Cloudflare dashboard ↗, nebo prostřednictvím wrangler. Tento tutoriál bude používat wrangler CLI.
Otevřete terminál a spusťte následující příkaz:
npx wrangler d1 create prisma-demo-dbV terminálu byste měli obdržet následující výstup:
✅ Successfully created DB 'prisma-demo-db' in region WEUR
Created your new D1 database.
{
"d1_databases": [
{
"binding": "DB",
"database_name": "prisma-demo-db",
"database_id": "<D1_DATABASE_ID>"
}
]
}Nyní máte v účtu Cloudflare databázi D1 s bindingem na váš Cloudflare Worker.
Zkopírujte poslední část výstupu příkazu a vložte ji do svého souboru Wrangler. Mělo by to vypadat přibližně takto:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "prisma-d1-example",
"main": "src/index.ts",
// Set this to today's date
"compatibility_date": "2026-08-28",
"compatibility_flags": [
"nodejs_compat"
],
"observability": {
"enabled": true
},
"d1_databases": [
{
"binding": "DB", // i.e. available in your Worker on env.DB
"database_name": "prisma-demo-db",
"database_id": "<D1_DATABASE_ID>"
}
]
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "prisma-d1-example"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-08-28"
compatibility_flags = [ "nodejs_compat" ]
[observability]
enabled = true
[[d1_databases]]
binding = "DB"
database_name = "prisma-demo-db"
database_id = "<D1_DATABASE_ID>"Nahraďte <D1_DATABASE_ID> s ID databáze vaší instance D1. Pokud se vám nepodařilo toto ID zjistit z výstupu terminálu, najdete ho také v Cloudflare dashboard ↗, nebo spuštěním npx wrangler d1 info prisma-demo-db ve vašem terminálu.
Dále v databázi vytvoříte tabulku, abyste mohli odesílat dotazy do D1 pomocí Prisma ORM.
4. Vytvořte tabulku v databázi
Prisma Migrate ↗ zatím nepodporuje D1, takže nemůžete použít výchozí postupy migrace pomocí prisma migrate dev nebo prisma db push.
D1 využívá migrace pro správu změn schématu a Prisma CLI vám pomůže vygenerovat potřebné SQL pro tyto aktualizace. V následujících krocích použijete oba nástroje k vytvoření a použití migrace databáze.
Nejprve vytvořte novou migraci pomocí wrangler:
npx wrangler d1 migrations create prisma-demo-db create_user_tableOdpovězte yes k vytvoření nové složky s názvem migrations.
Příkaz nyní vytvořil nový adresář s názvem migrations a prázdný soubor s názvem 0001_create_user_table.sql uvnitř:
- prisma-d1-example
- migrace
- 0001_create_user_table.sql
- migrace
Dále musíte přidat příkaz SQL, který vytvoří User tabulku do tohoto souboru.
Otevřete schema.prisma soubor a přidejte následující User model do svého schématu:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
}Nyní v terminálu spusťte následující příkaz, který vygeneruje příkaz SQL vytvářející User tabulka odpovídající User model výše:
npx prisma migrate diff --from-empty --to-schema ./prisma/schema.prisma --script --output migrations/0001_create_user_table.sqlnpx prisma migrate diff --from-empty --to-schema-datamodel ./prisma/schema.prisma --script --output migrations/0001_create_user_table.sqlTím se uloží příkaz SQL k vytvoření nové User tabulku v souboru migrace z předchozího kroku, zde je, jak vypadá:
-- CreateTable
CREATE TABLE "User" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"email" TEXT NOT NULL,
"name" TEXT
);
-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");UNIQUE INDEX na email byla vytvořena, protože User model ve vašem schématu Prisma používá @unique ↗ atribut na svém email .
Nyní musíte použít wrangler d1 migrations apply příkaz k odeslání tohoto příkazu SQL do D1. Tento příkaz přijímá dvě možnosti:
--local: Provede příkaz nad lokální verzi D1. Tato lokální verze D1 je soubor databáze SQLite, který bude umístěn v.wrangler/stateadresáři vašeho projektu. Tento postup použijte, pokud chcete Worker vyvíjet a testovat na svém lokálním počítači. Další informace najdete v Lokální vývoj a zjistěte více.--remote: Provede příkaz nad vaší vzdálené verzi D1. Tuto verzi používá váš nasazeno Cloudflare Workers. Přečtěte si Vzdálený vývoj a zjistěte více.
V tomto tutoriálu budete provádět lokální i vzdálený vývoj. Worker nejprve otestujete lokálně a poté ho nasadíte.
Otevřete terminál a spusťte oba příkazy:
# For the local database
npx wrangler d1 migrations apply prisma-demo-db --local# For the remote database
npx wrangler d1 migrations apply prisma-demo-db --remoteVyberte Yes pokaždé, když budete vyzváni k potvrzení, že se má migrace použít.
Dále vytvořte data, která budete moci dotazovat, jakmile Worker poběží. Tentokrát spustíte příkaz SQL, aniž byste ho ukládali do souboru:
# For the local database
npx wrangler d1 execute prisma-demo-db --command "INSERT INTO \"User\" (\"email\", \"name\") VALUES
('[email protected]', 'Jane Doe (Local)');" --local# For the remote database
npx wrangler d1 execute prisma-demo-db --command "INSERT INTO \"User\" (\"email\", \"name\") VALUES
('[email protected]', 'Jane Doe (Remote)');" --remote5. Dotazujte databázi z Workeru
Pro dotazování databáze z Workeru pomocí Prisma ORM je třeba:
- Přidejte
DBdoEnvrozhraní. - Vytvořte instanci
PrismaClientpomocíPrismaD1adaptéru ovladače. - Odešlete dotaz pomocí Prisma Client a vraťte výsledek.
Otevřete src/index.ts a nahraďte celý obsah následujícím:
import { PrismaClient } from "./generated/prisma/";
import { PrismaD1 } from "@prisma/adapter-d1";
export default {
async fetch(request, env, ctx) {
const adapter = new PrismaD1(env.DB);
const prisma = new PrismaClient({ adapter });
const users = await prisma.user.findMany();
const result = JSON.stringify(users);
return new Response(result);
},
};import { PrismaClient } from './generated/prisma/';
import { PrismaD1 } from '@prisma/adapter-d1';
export interface Env {
DB: D1Database;
}
export default {
async fetch(request, env, ctx): Promise<Response> {
const adapter = new PrismaD1(env.DB);
const prisma = new PrismaClient({ adapter });
const users = await prisma.user.findMany();
const result = JSON.stringify(users);
return new Response(result);
},
} satisfies ExportedHandler<Env>;Než Worker spustíte, vygenerujte Prisma Client pomocí následujícího příkazu:
npx prisma generate6. Spusťte Worker lokálně
Nyní, když máte databázový dotaz hotový a Prisma Client vygenerovaný, spusťte Worker lokálně:
npm run devOtevřete prohlížeč na adrese http://localhost:8787 ↗ ke kontrole výsledku databázového dotazu:
[{ "id": 1, "email": "[email protected]", "name": "Jane Doe (Local)" }]7. Nasaďte Worker
Chcete-li nasadit Worker, spusťte následující příkaz:
npm run deployPřistupte ke svému Workeru na adrese https://prisma-d1-example.USERNAME.workers.dev. V prohlížeči by se měla zobrazit následující data načtená z vaší vzdálené databáze D1:
[{ "id": 1, "email": "[email protected]", "name": "Jane Doe (Remote)" }]Dokončením tohoto výukového kurzu jste nasadili Cloudflare Worker, který používá D1 jako databázi a dotazuje se na ni pomocí Prisma ORM.
Související zdroje
- Dokumentace Prisma ↗.
- Pokud potřebujete pomoc, otevřete nový GitHub Discussion ↗, nebo zeptejte se AI bota v dokumentaci Prisma ↗.
- Připravené příklady s využitím Prisma ORM ↗.
- Podívejte se na Komunita Prisma ↗, postupujte podle Prisma na X ↗ a připojte se k Prisma Discord ↗.
- Developer Experience Redefined: Prisma & Cloudflare Lead the Way to Data DX ↗.