数据库
用 Prisma Client 写数据库查询时:CRUD…
在 Prisma 项目中编写数据库查询、执行 CRUD、过滤排序、处理关联或使用事务时,按类别查阅对应 API 与写法。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 Prisma Client 写数据库特定
解决思路
- 按优先级选择规则类别:1 Client Construction(constructor)、2 Model Queries(model-queries)、3 Query Shape(query-options)、4 Filtering(filters)、5 Relations(relations)、6 Transactions(transactions)、7 Raw SQL(raw-queries)、8 Client Methods(client-methods),再从对应 references/ 文件中查看实现细节与示例。
- 实例化客户端:从 '../generated/client' 导入 PrismaClient,从 '@prisma/adapter-pg' 导入 PrismaPg,用 connectionString: process.env.DATABASE_URL 创建 adapter,再 new PrismaClient({ adapter })。
- 按需选用模型查询方法:findUnique()、findUniqueOrThrow()、findFirst()、findFirstOrThrow()、findMany()、create()、createMany()、createManyAndReturn()、update()、updateMany()、updateManyAndReturn()、upsert()、delete()、deleteMany()、count()、aggregate()、groupBy()。
- 用查询选项控制查询形状:where(过滤条件)、select(包含字段)、include(加载关联)、omit(排除字段)、orderBy(排序)、take(限制数量)、skip(跳过,用于分页)、cursor(游标分页)、distinct(去重)。
- 用客户端方法管理生命周期与扩展:$connect()、$disconnect()、$transaction()、$queryRaw()、$executeRaw()、$on()、$extends()。
- 查询示例:用 findUnique({ where: { email: 'alice@prisma.io' } }) 按唯一字段查找;用 findMany({ where: { role: 'ADMIN' }, orderBy: { createdAt: 'desc' }, take: 10 }) 带过滤、排序和数量限制查询。
- 创建示例:用 create({ data: { email, name, posts: { create: { title: 'Hello World' } } }, include: { posts: true } }) 同时创建关联记录并返回。
- 更新示例:用 update({ where: { id: 1 }, data: { name: 'Alice Smith' } }) 更新单条记录。
- 删除示例:用 delete({ where: { id: 1 } }) 删除单条记录。
- 事务示例:用 prisma.$transaction([...]) 传入多个操作(如 prisma.user.create 与 prisma.post.create)以数组形式批量执行。
- 过滤操作符:equals(精确匹配)、not(不等于)、in(在数组中)、notIn(不在数组中)、lt/lte(小于/小于等于)、gt/gte(大于/大于等于)、contains(字符串包含)、startsWith(以…开头)、endsWith(以…结尾)、mode(大小写敏感控制)。
- 关联过滤操作符:some(至少一条关联记录匹配)、every(所有关联记录匹配)、none(没有关联记录匹配)、is(一对一关联记录匹配)、isNot(一对一关联记录不匹配)。
- 查阅详细文档:references/constructor.md(构造函数选项)、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)。
适用边界 · 注意事项
- 不使用 Prisma Client 的项目(如使用其他 ORM 或原生 SQL 驱动)不适用。
- 需要非 Prisma 的数据库访问方式或未生成 Prisma Client 时无法直接套用。
- 涉及 Prisma 版本差异时需核对当前版本(本参考基于 7.9.1),旧版本可能缺少部分方法或选项。