Prisma 客户端是一个自动生成的库,可以作为 Prisma 绑定的替代方案,用于在你的应用程序中访问数据。它支持 JavaScript、TypeScript、Flow 和 Go。

Prisma 客户端:Prisma 绑定的下一个演进
Prisma 将你的数据库转换为 GraphQL API。这个 GraphQL API 通常不会被前端应用程序直接使用,而是作为一种数据库抽象,以简化应用程序服务器中的数据访问(类似于 ORM)。
当使用 Prisma 实现 GraphQL 服务器时,你的 GraphQL 服务器的解析器使用 Prisma 绑定和 schema 委托连接到 Prisma API。
Schema 委托是一种高级的解析器实现方式,通过将传入请求(使用
info对象)转发到另一个 GraphQL API 来实现。
虽然 schema 委托是一个强大而优雅的概念,但它最适合高级用例。为了使 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 强大的查询引擎根据数据库解析。
使用新的 Prisma 客户端 API,仍然可以使用 GraphQL 查询嵌套数据,或者将 schema 委托用于高级用例。
请参阅文档中的更多示例。
写入数据
与查询一样,变异也暴露在 Prisma 客户端的顶层
您还可以通过单个事务执行多个写入操作
请参阅文档中的更多示例。
无样板代码:通过代码生成实现类型安全
Prisma 客户端的一个核心优势是类型安全。类型安全促进生产力、更好的可维护性、更简单的重构,并带来出色的开发人员体验。
类型安全的数据访问需要大量的手动工作、编写样板代码和冗余的类型定义。Prisma 客户端利用代码生成为数据模型和查询提供自定义类型。
尝试 Prisma 客户端
要了解有关 Prisma 客户端的更多信息,请查看新的示例仓库或遵循“入门”教程。请在Slack上告诉我们您的想法 🙌
开始使用
不要错过下一篇文章!
订阅 Prisma 新闻通讯