了解了GraphQL并在几个项目中使用它之后,我终于想尝试一下Prisma。它承诺消除对数据库的需求,并从GraphQL架构生成GraphQL客户端和有效的数据库。到目前为止一切顺利。
但是我的问题是:对我来说,一个GraphQL客户端真的只对客户端有用(防止过度获取,加速页面,React集成...)。但是Prisma并没有消除对业务逻辑的需求,因此最终将使用Node.js中生成的客户端库,只是将另一台GraphQL服务器中的许多功能重新导出到实际客户端。
为什么我比自定义数据库解决方案更喜欢Prisma?是否必须将许多端点重新暴露给实际客户背后有什么想法?
答案 0 :(得分:3)
我在Prisma工作,很想澄清这一点!
以下是一个快速的预告:Prisma不是“ GraphQL即服务”工具(以Graphcool,AppSync或Hasura的方式)。 Prisma客户端不是“ GraphQL客户端”,而是数据库客户端(类似于ORM)。因此,在前端不使用Prisma客户端的原因与您不使用ORM或不直接从前端连接到数据库的原因相同。
它承诺消除对数据库的需要,并从GraphQL Schema生成GraphQL客户端和有效的数据库。到目前为止一切顺利。
我真的很想知道您是从哪儿得到这种理解的!我们很清楚,我们需要改善与Prisma提供的价值及其运作方式的沟通。您的表述是对Prisma的一种非常普遍的误解,我们希望将来避免这种误解。实际上,我们计划在下周发布有关此确切主题的博客文章,希望这将澄清很多。
要提取具体点:
答案 1 :(得分:2)
即使我开始学习graphql时也有类似的问题。这是我使用它后所学到的。
Prisma充当数据库的代理,为您提供准备就绪
使用GraphQL API,该API允许您对数据进行过滤和排序
一些自定义类型,例如DateTime
,它们不是graphql和
您必须另外实现自己。它不是GraphQL服务器。只是一个
数据库和后端服务器之间的层,例如ORM。
它涵盖了您可能从中获得的几乎所有用例 架构中已预定义所有 CRUD 操作的数据模型 以及订阅,因此您不必做所有的事情 并更多地关注您的业务逻辑方面。
它也消除了您为以下内容编写不同查询的依赖性 像Sql或MongoDb这样的不同数据库充当 将其查询语言转换为实际的数据库查询。
您可以使用API(graphql)服务器仅公开所需的架构 给客户,而不是一切。由于graphql查询可以得到 高度嵌套,可能难以实施 可能还会导致性能问题,而Prisma却无法处理所有问题。
您可以查看此article以获得更多信息。