Drizzle 针对 Prisma 的扩展
如果您有一个现有的 Prisma 项目并想尝试 Drizzle 或逐步采用它,您可以使用我们的一流扩展,它将 Drizzle API 添加到您的 Prisma 客户端。这将允许您在重用现有数据库连接的同时,与 Prisma 查询一起使用 Drizzle。
如何使用
安装依赖
您需要安装 Drizzle 本身和一个生成器包,该包将从 Prisma 模式生成 Drizzle 模式。
npm
yarn
pnpm
bun
npm i drizzle-orm@latest
npm i -D drizzle-prisma-generator
更新您的 Prisma 模式
将 Drizzle 生成器添加到您的 Prisma 模式。output
是生成 Drizzle 模式 TS 文件的存放路径。
generator client {
provider = "prisma-client-js"
}
generator drizzle {
provider = "drizzle-prisma-generator"
output = "./drizzle" // Where to put generated Drizle tables
}
// Rest of your Prisma schema
datasource db {
provider = "postgresql"
url = env("DB_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
}
...
生成 Drizzle 模式
prisma generate
将 Drizzle 扩展添加到您的 Prisma 客户端
PostgreSQL
MySQL
SQLite
import { PrismaClient } from '@prisma/client';
import { drizzle } from 'drizzle-orm/prisma/pg';
const prisma = new PrismaClient().$extends(drizzle());
通过 prisma.$drizzle
运行 Drizzle 查询 ✨
为了使用 Drizzle 查询构建器,您需要 Drizzle 表的引用。您可以从生成器配置中指定的输出路径导入它们。
import { User } from './drizzle';
await prisma.$drizzle.insert().into(User).values({ email: '[email protected]', name: 'Søren' });
const users = await prisma.$drizzle.select().from(User);
限制
- 关系查询由于Prisma 驱动限制而不受支持。因此,Prisma 无法以数组格式返回查询结果,而这是关系查询工作所必需的。
- 在 SQLite 中,
.values()
(例如await db.select().from(table).values()
)不受支持,原因同上。 - 预处理语句支持有限——
.prepare()
只会在 Drizzle 端构建 SQL 查询,因为没有 Prisma API 用于预处理查询。