Prisma ORM ↗ は、型安全性と開発体験に重点を置いた Node.js / TypeScript 向け ORM です。この例では、Cloudflare Workers アプリケーションで Cloudflare Hyperdrive 経由の PostgreSQL に Prisma ORM を使う方法を示します。
- Workers にアクセスできる Cloudflare アカウント
- PostgreSQL データベース(Prisma Postgres ↗ など)
- PostgreSQL データベース向けの Hyperdrive 構成
- 既存の Worker プロジェクト
Prisma CLI を開発依存関係としてインストールします。
npm i -D prismayarn add -D prismapnpm add -D prismabun add -d prismaHyperdrive で使う pg ドライバーと Prisma ドライバーアダプターをインストールします。
npm i pg@>8.13.0 @prisma/adapter-pgyarn add pg@>8.13.0 @prisma/adapter-pgpnpm add pg@>8.13.0 @prisma/adapter-pgbun add pg@>8.13.0 @prisma/adapter-pgTypeScript を使う場合は、型パッケージをインストールします。
npm i -D @types/pgyarn add -D @types/pgpnpm add -D @types/pgbun add -d @types/pg必要な Node.js 互換フラグと Hyperdrive バインディングを Wrangler 構成ファイルに追加します。
{
// required for database drivers to function
"compatibility_flags": [
"nodejs_compat"
],
// Set this to today's date
"compatibility_date": "2026-09-20",
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<your-hyperdrive-id-here>"
}
]
}compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-09-20"
[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"アプリケーションで Prisma を初期化します。
npx prisma initprisma フォルダーに schema.prisma ファイルと .env ファイルが作成されます。
prisma/schema.prisma ファイルでデータベーススキーマを定義します。
generator client {
provider = "prisma-client-js"
previewFeatures = ["driverAdapters"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
createdAt DateTime @default(now())
}Prisma が作成した .env ファイルに、データベースの接続文字列を追加します。
DATABASE_URL="postgres://user:password@host:port/database"package.json にヘルパースクリプトを追加します。
"scripts": {
"migrate": "npx prisma migrate dev",
"generate": "npx prisma generate --no-engine",
"studio": "npx prisma studio"
}ドライバーアダプター対応の Prisma Client を生成します。
npm run generateデータベーススキーマを生成して適用します。
npm run migrateプロンプトが表示されたら、マイグレーション名を入力します(例: init)。
Prisma ORM を使うときは Hyperdrive 構成を使います。src/index.ts ファイルを更新します。
import { PrismaPg } from "@prisma/adapter-pg";
import { PrismaClient } from "@prisma/client";
export interface Env {
HYPERDRIVE: Hyperdrive;
}
export default {
async fetch(request, env, ctx): Promise<Response> {
// Create Prisma client using driver adapter with Hyperdrive connection string
const adapter = new PrismaPg({ connectionString: env.HYPERDRIVE.connectionString });
const prisma = new PrismaClient({ adapter });
// Sample query to create and fetch users
const user = await prisma.user.create({
data: {
name: "John Doe",
email: `john.doe.${Date.now()}@example.com`,
},
});
const allUsers = await prisma.user.findMany();
return Response.json({
newUser: user,
allUsers: allUsers,
});
},
} satisfies ExportedHandler<Env>;Worker をデプロイします。
npx wrangler deploy- Hyperdrive の仕組み について詳しく学びます。
- よくある問題の切り分けは トラブルシューティングガイド を参照してください。
- Cloudflare Workers で使えるほかの ストレージオプション についても確認します。