跳转到内容
搜索文档

Prisma ORM

最后更新 查看 MarkdownAgent 设置

Prisma ORM 是注重类型安全和开发者体验的 Node.js 与 TypeScript ORM。本示例演示如何在 Workers 应用中通过 Cloudflare Hyperdrive 将 Prisma ORM 与 PostgreSQL 配合使用。

前提条件

1. 安装 Prisma ORM

将 Prisma CLI 安装为开发依赖:

npm i -D prisma

安装 pg 驱动及用于 Hyperdrive 的 Prisma 驱动适配器:

npm i pg@>8.13.0 @prisma/adapter-pg

若使用 TypeScript,安装类型包:

npm i -D @types/pg

在 Wrangler 配置文件中添加所需的 Node.js 兼容性标志和 Hyperdrive 绑定(binding):

wrangler.jsonc 中添加 Node.js 兼容性标志和 Hyperdrive 绑定(binding):

{
	// required for database drivers to function
	"compatibility_flags": [
		"nodejs_compat"
	],
	// Set this to today's date
	"compatibility_date": "2026-08-17",
	"hyperdrive": [
		{
			"binding": "HYPERDRIVE",
			"id": "<your-hyperdrive-id-here>"
		}
	]
}
compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-08-17"

[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"

2. 配置 Prisma ORM

2.1. 初始化 Prisma

在应用中初始化 Prisma:

npx prisma init

这将创建包含 schema.prisma 文件的 prisma 文件夹和 .env 文件。

2.2. 定义 schema

prisma/schema.prisma 文件中定义数据库 schema:

prisma/schema.prismaprisma
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())
}

2.3. 设置环境变量

将数据库连接字符串添加到 Prisma 创建的 .env 文件:

.envtxt
DATABASE_URL="postgres://user:password@host:port/database"

package.json 中添加辅助脚本:

package.jsonjson
"scripts": {
  "migrate": "npx prisma migrate dev",
  "generate": "npx prisma generate --no-engine",
  "studio": "npx prisma studio"
}

2.4. 生成 Prisma Client

生成支持驱动适配器的 Prisma 客户端:

npm run generate

2.5. 运行迁移

生成并应用数据库 schema:

npm run migrate

提示时,为迁移提供名称(例如 init)。

3. 将 Prisma ORM 连接到 Hyperdrive

使用 Prisma ORM 时,请使用 Hyperdrive 配置。更新 src/index.ts 文件:

src/index.tsts
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>;

4. 部署 Worker

部署 Worker:

npx wrangler deploy

后续步骤

这篇文档对您有帮助吗?