使用 Prisma ORM 部署 Edge 函数
您可以使用 Prisma ORM 将应用程序部署到 Edge 环境。根据您使用的 Edge 函数提供商和数据库,会有不同的注意事项和需要了解的地方。
以下是 Prisma ORM 目前支持的所有 Edge 函数提供商的简要概述
提供商 / 产品 | Prisma ORM 原生支持 | Prisma Postgres(以及 Prisma Accelerate)支持 |
---|---|---|
Vercel Edge Functions | ✅ (预览版;仅兼容驱动) | ✅ |
Vercel Edge Middleware | ✅ (预览版;仅兼容驱动) | ✅ |
Cloudflare Workers | ✅ (预览版;仅兼容驱动) | ✅ |
Cloudflare Pages | ✅ (预览版;仅兼容驱动) | ✅ |
Deno Deploy | 暂不支持 | ✅ |
目前,在 Cloudflare 和 Vercel 上部署使用 Prisma ORM 的 Edge 函数处于预览版阶段。
数据库驱动的 Edge 兼容性
为什么 Edge 函数中数据库驱动存在限制?
Edge 函数通常不使用标准的 Node.js 运行时。例如,Vercel Edge Functions 和 Cloudflare Workers 在 V8 隔离环境 中运行代码。Deno Deploy 使用 Deno JavaScript 运行时。因此,这些 Edge 函数只能访问标准 Node.js API 的一小部分,并且计算资源(CPU 和内存)也受到限制。
特别是,无法自由打开 TCP 连接的限制使得 Edge 函数难以与传统数据库通信。虽然 Cloudflare 引入了允许有限 TCP 连接的 connect()
API,但这仍然只允许使用与该 API 兼容的特定数据库驱动进行数据库访问。
我们建议使用 Prisma Postgres。它在 Edge 运行时上完全支持,并且不需要专门的 Edge 兼容驱动。对于其他数据库,Prisma Accelerate 扩展了 Edge 兼容性,因此您可以从任何 Edge 函数提供商连接到任何数据库。
哪些数据库驱动兼容 Edge 环境?
以下是不同数据库驱动及其与不同 Edge 函数提供商兼容性的概述
- Neon Serverless 使用 HTTP 访问数据库。它与 Cloudflare Workers 和 Vercel Edge Functions 兼容。
- PlanetScale Serverless 使用 HTTP 访问数据库。它与 Cloudflare Workers 和 Vercel Edge Functions 兼容。
node-postgres
(pg
) 使用 Cloudflare 的connect()
(TCP) 访问数据库。它仅与 Cloudflare Workers 兼容,与 Vercel Edge Functions 不兼容。@libsql/client
用于访问 Turso 数据库。它与 Cloudflare Workers 和 Vercel Edge Functions 兼容。- Cloudflare D1 用于访问 D1 数据库。它仅与 Cloudflare Workers 兼容,与 Vercel Edge Functions 不兼容。
- Prisma Postgres 用于访问基于裸机和 Unikernel 构建的 PostgreSQL 数据库。它同时支持 Cloudflare Workers 和 Vercel。
此外,node-mysql2
驱动也正在进行开发工作,未来也将支持从 Cloudflare Workers 和 Pages 访问传统 MySQL 数据库。
您可以使用相应的驱动适配器将所有这些驱动与 Prisma ORM 一起使用。
根据您使用的部署提供商和数据库/驱动,可能会有一些特殊注意事项。请查阅对应场景的部署文档,以确保您能成功部署应用程序
- Cloudflare
- Vercel
如果您想部署使用 Turso 的应用程序,可以按照此处的说明进行操作。