为什么在后端环境中使用Prisma?

时间:2019-03-05 11:55:40

标签: graphql prisma

了解了GraphQL并在几个项目中使用它之后,我终于想尝试一下Prisma。它承诺消除对数据库的需求,并从GraphQL架构生成GraphQL客户端和有效的数据库。到目前为止一切顺利。

但是我的问题是:对我来说,一个GraphQL客户端真的只对客户端有用(防止过度获取,加速页面,React集成...)。但是Prisma并没有消除对业务逻辑的需求,因此最终将使用Node.js中生成的客户端库,只是将另一台GraphQL服务器中的许多功能重新导出到实际客户端。

为什么我比自定义数据库解决方案更喜欢Prisma?是否必须将许多端点重新暴露给实际客户背后有什么想法?

2 个答案:

答案 0 :(得分:3)

我在Prisma工作,很想澄清这一点!

以下是一个快速的预告:Prisma不是“ GraphQL即服务”工具(以Graphcool,AppSync或Hasura的方式)。 Prisma客户端不是“ GraphQL客户端”,而是数据库客户端(类似于ORM)。因此,在前端不使用Prisma客户端的原因与您不使用ORM或不直接从前端连接到数据库的原因相同。

  

它承诺消除对数据库的需要,并从GraphQL Schema生成GraphQL客户端和有效的数据库。到目前为止一切顺利。

我真的很想知道您是从哪儿得到这种理解的!我们很清楚,我们需要改善与Prisma提供的价值及其运作方式的沟通。您的表述是对Prisma的一种非常普遍的误解,我们希望将来避免这种误解。实际上,我们计划在下周发布有关此确切主题的博客文章,希望这将澄清很多。

要提取具体点:

  • Prisma不会消除对数据库的需求。与ORM相似,Prisma客户端用于简化数据库访问。通过声明性的数据建模和迁移方法,它也使数据库迁移更加容易(我们目前正在对迁移系统进行重大改进,您可以here找到它的RFC)。
  • Prisma的另一个主要优点是即将推出的Prisma Admin(一种数据管理工具)。下一个预览版将在下周发布。

答案 1 :(得分:2)

即使我开始学习graphql时也有类似的问题。这是我使用它后所学到的。

  • Prisma充当数据库的代理,为您提供准备就绪 使用GraphQL API,该API允许您对数据进行过滤和排序 一些自定义类型,例如DateTime,它们不是graphql和 您必须另外实现自己。它不是GraphQL服务器。只是一个 数据库和后端服务器之间的层,例如ORM。

  • 它涵盖了您可能从中获得的几乎所有用例 架构中已预定义所有 CRUD 操作的数据模型 以及订阅,因此您不必做所有的事情 并更多地关注您的业务逻辑方面。

  • 它也消除了您为以下内容编写不同查询的依赖性 像Sql或MongoDb这样的不同数据库充当 将其查询语言转换为实际的数据库查询。

  • 您可以使用API​​(graphql)服务器仅公开所需的架构 给客户,而不是一切。由于graphql查询可以得到 高度嵌套,可能难以实施 可能还会导致性能问题,而Prisma却无法处理所有问题。

您可以查看此article以获得更多信息。