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