为什么在后端环境中使用 Prisma?
Why use Prisma in a backend environment?
在学习了 GraphQL 并在几个项目中使用它之后,我终于想尝试一下 Prisma。它承诺消除对数据库的需求,并从 GraphQL Schema 生成一个 GraphQL 客户端和一个工作数据库。到目前为止一切顺利。
但我的问题是:GraphQL 客户端对我来说真的只对客户端有用(防止过度获取、加速页面、React 集成,...)。然而,Prisma 并没有消除对业务逻辑的需求,因此人们最终会使用 Node.js 中生成的客户端库,只是将另一个 GraphQL 服务器中的许多功能重新导出到实际客户端。
为什么我更喜欢 Prisma 而不是自定义数据库解决方案?是否有必要将大量端点重新暴露给实际客户端的想法?
我刚开始学习graphql的时候也有过类似的疑问。这是我使用后的感悟。
Prisma 充当您数据库的代理,为您提供现成的
使用 GraphQL API 来过滤和排序数据
一些自定义类型,例如 DateTime
,它们不是 graphql 的一部分,并且
你必须自己实施。它不是 GraphQL 服务器。只是一个
数据库和后端服务器之间的层,如 ORM。
它涵盖了几乎所有可能的用例
在模式中预定义了所有 CRUD 操作的数据模型
连同 订阅,因此您不必做所有这些事情
并更多地关注事物的业务逻辑方面。
此外,它还消除了您为以下内容编写不同查询的依赖性
不同的数据库,如 Sql 或 MongoDb 作为一个层
将其查询语言转换为实际的数据库查询。
您可以使用 API(graphql) 服务器仅公开所需的模式
给客户而不是一切。由于 graphql 查询可以得到
高度嵌套,实现它可能是困难和棘手的
也可能导致性能问题,这在 Prisma 中并非如此,因为它会自行处理所有事情。
您可以查看此 article 了解更多信息。
我在 Prisma 工作,很想澄清一下!
预先快速说明:Prisma 不是 "GraphQL-as-a-Service" 工具(与 Graphcool、AppSync 或 Hasura 不同)。 Prisma 客户端不是 "GraphQL client",它是 数据库客户端 (类似于 ORM)。因此,不在前端使用 Prisma 客户端的原因与不使用 ORM 或不直接从前端连接到数据库的原因相同。
It promises to eliminate the need for a database and it generates a GraphQL client and a working database from the GraphQL Schema. So far so good.
我真的很想知道你到底是从哪里得到这种看法的!我们很清楚,我们需要改进关于 Prisma 提供的价值及其运作方式的沟通。你所表述的是关于 Prisma 的一个极其普遍的误解,我们希望在未来避免这种误解。我们实际上计划在下周发布关于这个确切主题的博客 post,希望这会澄清很多。
拾取具体点:
- Prisma 并没有消除对数据库的需求。与 ORM 类似,Prisma 客户端用于简化数据库访问。它还通过声明性数据建模和迁移方法使数据库迁移更容易(我们实际上目前正在对我们的迁移系统进行重大改进,您可以找到它的 RFC here)。
- Prisma 的另一个主要优势是即将推出的数据管理工具 Prisma Admin。下周将提供第一个预览版。
在学习了 GraphQL 并在几个项目中使用它之后,我终于想尝试一下 Prisma。它承诺消除对数据库的需求,并从 GraphQL Schema 生成一个 GraphQL 客户端和一个工作数据库。到目前为止一切顺利。
但我的问题是:GraphQL 客户端对我来说真的只对客户端有用(防止过度获取、加速页面、React 集成,...)。然而,Prisma 并没有消除对业务逻辑的需求,因此人们最终会使用 Node.js 中生成的客户端库,只是将另一个 GraphQL 服务器中的许多功能重新导出到实际客户端。
为什么我更喜欢 Prisma 而不是自定义数据库解决方案?是否有必要将大量端点重新暴露给实际客户端的想法?
我刚开始学习graphql的时候也有过类似的疑问。这是我使用后的感悟。
Prisma 充当您数据库的代理,为您提供现成的 使用 GraphQL API 来过滤和排序数据 一些自定义类型,例如
DateTime
,它们不是 graphql 的一部分,并且 你必须自己实施。它不是 GraphQL 服务器。只是一个 数据库和后端服务器之间的层,如 ORM。它涵盖了几乎所有可能的用例 在模式中预定义了所有 CRUD 操作的数据模型 连同 订阅,因此您不必做所有这些事情 并更多地关注事物的业务逻辑方面。
此外,它还消除了您为以下内容编写不同查询的依赖性 不同的数据库,如 Sql 或 MongoDb 作为一个层 将其查询语言转换为实际的数据库查询。
您可以使用 API(graphql) 服务器仅公开所需的模式 给客户而不是一切。由于 graphql 查询可以得到 高度嵌套,实现它可能是困难和棘手的 也可能导致性能问题,这在 Prisma 中并非如此,因为它会自行处理所有事情。
您可以查看此 article 了解更多信息。
我在 Prisma 工作,很想澄清一下!
预先快速说明:Prisma 不是 "GraphQL-as-a-Service" 工具(与 Graphcool、AppSync 或 Hasura 不同)。 Prisma 客户端不是 "GraphQL client",它是 数据库客户端 (类似于 ORM)。因此,不在前端使用 Prisma 客户端的原因与不使用 ORM 或不直接从前端连接到数据库的原因相同。
It promises to eliminate the need for a database and it generates a GraphQL client and a working database from the GraphQL Schema. So far so good.
我真的很想知道你到底是从哪里得到这种看法的!我们很清楚,我们需要改进关于 Prisma 提供的价值及其运作方式的沟通。你所表述的是关于 Prisma 的一个极其普遍的误解,我们希望在未来避免这种误解。我们实际上计划在下周发布关于这个确切主题的博客 post,希望这会澄清很多。
拾取具体点:
- Prisma 并没有消除对数据库的需求。与 ORM 类似,Prisma 客户端用于简化数据库访问。它还通过声明性数据建模和迁移方法使数据库迁移更容易(我们实际上目前正在对我们的迁移系统进行重大改进,您可以找到它的 RFC here)。
- Prisma 的另一个主要优势是即将推出的数据管理工具 Prisma Admin。下周将提供第一个预览版。