基本 API
查找、更新和删除记录。
示例使用以下 Prisma 模式
model Post {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
published Boolean
title String
content String?
comments Comment[]
}
model Comment {
id String @id @default(cuid())
createdAt DateTime @default(now())
content String
post Post @relation(fields: [postID], references: [id])
postID String
}
读取数据
查找多条记录
posts, err := client.Post.FindMany(
db.Post.Title.Equals("hi"),
).Exec(ctx)
如果未找到任何记录,则上述查询将返回一个切片,而不会返回错误(与普通的 SQL 查询一样)。
查找唯一记录
FindUnique 查找保证唯一的记录,例如 @id 字段或标记为 @unique 的字段。
post, err := client.Post.FindUnique(
db.Post.ID.Equals("123"),
).Exec(ctx)
if errors.Is(err, db.ErrNotFound) {
log.Printf("no record with id 123")
} else if err != nil {
log.Printf("error occurred: %s", err)
}
查找单条记录
FindFirst 查找找到的第一条记录。它具有与 FindMany 相同的查询功能,但充当一个便利方法,仅返回找到的第一条记录。
post, err := client.Post.FindFirst(
db.Post.Title.Equals("hi"),
).Exec(ctx)
if errors.Is(err, db.ErrNotFound) {
log.Printf("no record with title 'hi' found")
} else if err != nil {
log.Printf("error occurred: %s", err)
}
log.Printf("post: %+v", post)
如果不存在这样的记录,则返回一个 ErrNotFound
错误(由生成的客户端导出)。
查询 API
查询操作根据您模式中的数据类型而变化。例如,整数和浮点数将具有大于和小于操作,而字符串具有前缀和后缀操作。
posts, err := client.Post.FindMany(
// query for posts containing the title "What"
db.Post.Title.Contains("What"),
).Exec(ctx)
要探索更多查询过滤器,请参阅 所有可能的查询过滤器。
查询关系
您可以使用“Some”、“Every”或“None”查询关系,分别查询仅部分、全部或无记录匹配的记录。您可以根据需要嵌套这些查询。
请 查看“Every”过滤器的注意事项(在新标签页中打开)。
// get posts which have at least one comment with a content "My Content" and that post's titles are all "What up?"
posts, err := client.Post.FindMany(
db.Post.Title.Equals("What up?"),
db.Post.Comments.Some(
db.Comment.Content.Equals("My Content"),
),
).Exec(ctx)
要详细了解查询关系,请参阅 更多关系查询示例。