Prisma client 是一个自动生成的库,可以用作 Prisma bindings 的替代方案,以访问应用程序中的数据。它适用于 JavaScript、TypeScript、Flow 和 Go。

⚠️ 本文已过时,因为它与现已弃用的 Prisma 1 相关。要了解有关最新版本 Prisma 的更多信息,请阅读文档。 ⚠️
Prisma client:Prisma bindings 的下一步演进
Prisma 将您的数据库变成 GraphQL API。这个 GraphQL API 通常不被前端应用程序直接使用,而是用作数据库抽象层,以简化应用程序服务器中的数据访问(类似于 ORM)。
当使用 Prisma 实现 GraphQL 服务器时,您的 GraphQL 服务器的解析器使用 Prisma bindings 和 schema delegation 连接到 Prisma API。
Schema delegation 是一种通过将传入请求(使用
info
对象)转发到另一个 GraphQL API 来实现解析器的高级方法。
虽然 schema delegation 是一个强大而优雅的概念,但它最适合高级用例。为了使 Prisma 更加灵活和易于使用,我们正在引入一种在您的应用程序中使用 Prisma API 的新方法:Prisma client。
更多用例:构建 GraphQL 服务器、REST API 等
新的 Prisma client 与 Prisma bindings 的用途相似,但有三个主要区别
- 虽然 Prisma bindings 是为 GraphQL 服务器设计的,但 Prisma client 更灵活,可以用于更多用例,例如 REST API、CLI、脚本等。
- Prisma client 是 Prisma 工具链的组成部分:它在
prisma.yml
中配置,并使用 Prisma CLI 生成。 - Prisma client 支持多种语言。今天的预览版使其适用于 JavaScript、TypeScript、Flow 和 Go!
我仍然可以为我的 GraphQL 服务器使用 Prisma bindings 吗?
Prisma bindings 仍然是通过委托给底层 Prisma API 来实现 GraphQL 解析器的强大方法。如果 Prisma bindings 适用于您当前的用例,则无需更改您的实现来使用新的 Prisma client。
生成 Prisma client
Prisma client 是一个连接到您的 Prisma API 的库。它是根据您的 Prisma 数据模型自动生成的,因此了解所有 API 操作和数据结构。
要生成 Prisma client,您需要做两件事
- 在您的
prisma.yml
中指定新的generate
属性,例如:
- 在 Prisma CLI 中运行新的
prisma generate
命令。它从prisma.yml
和您的数据模型中读取信息以生成 Prisma client。请注意,这仅适用于 Prisma 1.17-beta 或更高版本。
上面的代码演示了如何在 TypeScript 中生成客户端;对于 JavaScript、Flow 和 Go,您可以使用以下 generator
值:javascript-client
、flow-client
和 go-client
。
使用 Prisma client API
Prisma client API 是根据您的数据模型生成的,并为每个模型公开 CRUD 操作。
以下所有代码示例均基于以下数据模型
您可以在此处查看新的 Prisma client API 的完整文档。
导入 Prisma client 实例
生成后,您可以将 Prisma client 实例导入到您的代码中
读取数据
虽然 Prisma bindings 通过 query
字段公开所有查询,但查询可以直接在生成的 Prisma client 上调用
这将返回返回的 User
对象的所有标量字段。可以使用方法链(也称为fluent API)优雅地查询关系
请注意,上面的代码片段仍然导致对 Prisma API 的单个请求,然后由 Prisma 强大的查询引擎针对数据库解析该请求。
使用新的 Prisma client API,仍然可以使用 GraphQL 查询嵌套数据或使用 schema delegation 进行高级用例。
请在文档中查看更多示例。
写入数据
与查询一样,mutation 也公开在您的 Prisma client 的顶层
您还可以在单个事务中执行多个写入操作
请在文档中查看更多示例。
无需样板代码:通过代码生成实现类型安全
Prisma client 的一个核心优势是类型安全。类型安全可以提高生产力、更好的可维护性、更轻松的重构,并带来出色的开发者体验。
类型安全的数据访问需要大量手动工作、编写样板代码和冗余类型定义。Prisma client 利用代码生成来为数据模型和查询提供自定义类型。
试用 Prisma client
要了解有关 Prisma client 的更多信息,请查看新的示例存储库或按照“快速开始”教程进行操作。请在 Slack 上告诉我们您的想法 🙌
快速开始
不要错过下一篇文章!
注册 Prisma 新闻邮件