Prisma tRPC Generator快速入门:10分钟搭建完整CRUD API
Prisma tRPC Generator是一款强大的Prisma生成器,能够自动生成完整实现的tRPC路由,帮助开发者快速构建类型安全的CRUD API。通过自动化代码生成,它大幅减少了重复工作,让你专注于业务逻辑而非基础架构。
为什么选择Prisma tRPC Generator?
在现代Web开发中,构建API往往需要编写大量重复的CRUD代码。Prisma tRPC Generator通过以下方式解决这一痛点:
- 类型安全:利用TypeScript的类型系统,确保API输入输出类型一致
- 自动生成:从Prisma模型自动生成完整的tRPC路由和Zod验证模式
- 减少样板代码:消除手动编写CRUD操作的需要
- 无缝集成:与Prisma和tRPC生态系统完美融合
该工具特别适合需要快速开发API的项目,无论是小型应用还是大型企业系统。
安装与基本配置
环境要求
- Node.js 20.19.0或更高版本
- Prisma 7.0.0或更高版本
- tRPC服务器 11.7.1或更高版本
安装步骤
首先,通过npm安装Prisma tRPC Generator:
npm install prisma-trpc-generator --save-dev
或者使用pnpm:
pnpm add prisma-trpc-generator -D
配置Prisma
在你的Prisma模式文件(prisma/schema.prisma)中添加生成器配置:
generator trpc {
provider = "node ./lib/generator.js"
output = "./generated"
config = "./trpc.config.json"
}
创建你的第一个Prisma模型
让我们创建一个简单的用户模型作为示例。在Prisma模式文件中添加:
model User {
id Int @id @default(autoincrement())
/// @zod.email()
email String @unique
/// @zod.min(1).max(100)
name String?
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
title String
content String?
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
注意模型中的特殊注释/// @zod.email()和/// @zod.min(1).max(100),这些会被用于生成Zod验证规则。
生成tRPC路由
配置完成后,运行Prisma生成命令:
npx prisma generate
该命令会读取你的Prisma模型,并在指定的输出目录(prisma/generated)中生成完整的tRPC路由。
生成的路由包含所有常见的CRUD操作,如创建、读取、更新和删除。下面是生成的路由示例:
使用生成的路由
生成路由后,你可以在tRPC应用中直接使用它们。以下是一个基本示例:
import { router } from './trpc';
import { userRouter } from './prisma/generated/user/router';
import { postRouter } from './prisma/generated/post/router';
export const appRouter = router({
user: userRouter,
post: postRouter,
});
export type AppRouter = typeof appRouter;
现在你已经拥有了完整的CRUD API,包括:
- 用户的创建、查询、更新和删除
- 帖子的创建、查询、更新和删除
- 自动生成的Zod验证
- 类型安全的输入输出
自定义生成配置
Prisma tRPC Generator提供了丰富的配置选项,你可以通过prisma/trpc.config.json文件进行自定义:
{
"routes": {
"create": true,
"read": true,
"update": true,
"delete": true
},
"shield": {
"enabled": true
}
}
通过配置文件,你可以启用或禁用特定操作,配置权限控制,以及自定义生成行为。
实际应用示例
基本查询操作
// 获取所有用户
const users = await trpc.user.findMany.query();
// 获取单个用户
const user = await trpc.user.findById.query({ id: 1 });
创建新记录
const newUser = await trpc.user.create.mutate({
data: {
email: "user@example.com",
name: "John Doe"
}
});
更新记录
const updatedUser = await trpc.user.update.mutate({
where: { id: 1 },
data: { name: "Jane Doe" }
});
删除记录
const deletedUser = await trpc.user.delete.mutate({ id: 1 });
高级功能
权限控制
Prisma tRPC Generator与trpc-shield无缝集成,允许你定义细粒度的权限规则。配置文件位于prisma/shield.ts。
中间件支持
你可以通过prisma/middleware.ts添加自定义中间件,实现日志记录、请求验证等功能。
多租户支持
对于需要多租户功能的应用,可以参考示例examples/use-services-tenancy.ts。
测试你的API
项目提供了完整的测试套件,你可以通过运行以下命令来验证生成的API:
pnpm test
测试文件位于tests/目录,涵盖了各种功能测试,包括认证、中间件、路由生成等。
总结
Prisma tRPC Generator是一个强大的工具,它通过自动生成类型安全的tRPC路由,显著加速了API开发过程。通过本文介绍的步骤,你可以在10分钟内搭建起完整的CRUD API,而无需编写大量样板代码。
无论你是构建新应用还是重构现有项目,Prisma tRPC Generator都能帮助你提高开发效率,同时确保代码质量和类型安全。现在就尝试使用它,体验快速开发API的乐趣吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




