Prisma Client API 参考是一份面向当前 Prisma 项目的完整 API 参考,用于指导模型查询、数据过滤、关联查询以及客户端方法的使用。
适用时机 在以下情况可参考本技能:使用 Prisma Client 编写数据库查询;执行 CRUD 操作(创建、读取、更新、删除);过滤与排序数据;处理关联数据;使用事务;配置客户端选项。
规则类别(按优先级) 优先级 1:客户端构建(Client Construction),影响等级 HIGH,前缀 constructor;优先级 2:模型查询(Model Queries),影响等级 CRITICAL,前缀 model-queries;优先级 3:查询结构(Query Shape),影响等级 HIGH,前缀 query-options;优先级 4:过滤(Filtering),影响等级 HIGH,前缀 filters;优先级 5:关联(Relations),影响等级 HIGH,前缀 relations;优先级 6:事务(Transactions),影响等级 CRITICAL,前缀 transactions;优先级 7:原生 SQL(Raw SQL),影响等级 CRITICAL,前缀 raw-queries;优先级 8:客户端方法(Client Methods),影响等级 MEDIUM,前缀 client-methods。
快速参考 constructor:PrismaClient 设置、适配器接入、日志与 SQL 注释插件; model-queries:CRUD 操作与批量操作; query-options:select、include、omit、排序、分页; filters:标量与逻辑过滤操作符; relations:关联读取与嵌套写入; transactions:数组事务与交互式事务模式; raw-queries:$queryRaw 与 $executeRaw 的安全性; client-methods:生命周期方法、扩展以及适用于 prisma-client 的 satisfies 模式。
客户端实例化 代码示例: import { PrismaClient } from '../generated/client' import { PrismaPg } from '@prisma/adapter-pg'
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter })
模型查询方法 findUnique():按唯一字段查找一条记录; findUniqueOrThrow():查找一条记录,找不到则抛出错误; findFirst():查找第一条匹配记录; findFirstOrThrow():查找第一条匹配记录,找不到则抛出错误; findMany():查找多条记录; create():创建一条新记录; createMany():创建多条记录; createManyAndReturn():创建多条记录并返回它们; update():更新一条记录; updateMany():更新多条记录; updateManyAndReturn():更新多条记录并返回它们; upsert():更新或创建记录; delete():删除一条记录; deleteMany():删除多条记录; count():统计匹配记录数; aggregate():聚合值(sum、avg 等); groupBy():分组并聚合。
查询选项 where:过滤条件; select:要包含的字段; include:要加载的关联; omit:要排除的字段; orderBy:排序顺序; take:限制结果数量; skip:跳过结果(分页); cursor:基于游标的分页; distinct:仅返回唯一值。
客户端方法 $connect():显式连接数据库; $disconnect():断开数据库连接; $transaction():执行事务; $queryRaw():执行原生 SQL 查询; $executeRaw():执行原生 SQL 命令; $on():订阅事件; $extends():添加扩展。
快速示例 查找记录: // 按唯一字段查找 const user = await prisma.user.findUnique({ where: { email: 'alice@prisma.io' } })
// 带过滤条件查找 const users = await prisma.user.findMany({ where: { role: 'ADMIN' }, orderBy: { createdAt: 'desc' }, take: 10 })
创建记录: const user = await prisma.user.create({ data: { email: 'alice@prisma.io', name: 'Alice', posts: { create: { title: 'Hello World' } } }, include: { posts: true } })
更新记录: const user = await prisma.user.update({ where: { id: 1 }, data: { name: 'Alice Smith' } })
删除记录: await prisma.user.delete({ where: { id: 1 } })
事务: const [user, post] = await prisma.$transaction([ prisma.user.create({ data: { email: 'alice@prisma.io' } }), prisma.post.create({ data: { title: 'Hello', authorId: 1 } }) ])
规则文件 详细 API 文档: references/constructor.md:PrismaClient 构造函数选项; references/model-queries.md:CRUD 操作; references/query-options.md:select、include、omit、where、orderBy; references/filters.md:过滤条件与操作符; references/relations.md:关联查询与嵌套操作; references/transactions.md:事务 API; references/raw-queries.md:$queryRaw、$executeRaw; references/client-methods.md:$connect、$disconnect、$on、$extends。
过滤操作符 equals:精确匹配; not:不等于; in:在数组中; notIn:不在数组中; lt、lte:小于、小于等于; gt、gte:大于、大于等于; contains:字符串包含; startsWith:字符串以某内容开头; endsWith:字符串以某内容结尾; mode:大小写敏感性。
关联过滤器 some:至少一条关联记录匹配; every:所有关联记录都匹配; none:没有关联记录匹配; is:关联记录匹配(一对一); isNot:关联记录不匹配。
资源 Prisma Client API Reference;CRUD Operations;Filtering and Sorting。
如何使用 从上表中选择类别,然后打开匹配的参考文件以获取实现细节与示例。