Drizzle Prisma 扩展程序
如果你已经有一个使用 Prisma 的项目,并且想要尝试或逐步采用 Drizzle,你可以使用我们一流的扩展,它将 Drizzle API 添加到你的 Prisma 客户端。它允许你将 Drizzle 与 Prisma 查询一起使用,并重用你现有的数据库连接。
如何使用
安装依赖
你需要安装 Drizzle 本身以及一个生成器包,该生成器包将从 Prisma 模式创建 Drizzle 模式。
npm
yarn
pnpm
bun
npm i drizzle-orm@latest -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: 'sorenbs@drizzle.team', 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。