prisma 可以实现与 graphql 相同的功能吗?

Posted

技术标签:

【中文标题】prisma 可以实现与 graphql 相同的功能吗?【英文标题】:Can prisma achieve the same things as graphql? 【发布时间】:2021-10-05 08:03:10 【问题描述】:

我很难理解 graphql 除了有一个单一的端点之外还能在 prisma 之上实现什么。

我一直听说,graphql 的主要卖点是您可以查询您想要接收的特定字段,但是使用“select”属性的 prisma 也不能实现这一点吗?

const users = await user.findMany(
    select: 
        email: true,
    ,
);

感谢您的回答!

【问题讨论】:

【参考方案1】:

我理解你的困惑。我会尽量让您更清楚地了解 Prisma 和 GraphQL 之间的区别。

棱镜

Prisma 是一个类似 ORM 的工具。这意味着它可以帮助您在数据库中搜索数据。帮助您创建查询、连接数据等。Prisma 是一种(通常)位于后端的工具,可帮助您查找将发送到前端或移动应用程序的数据。

GraphQL

GraphQL 是一种与后端通信的方式。因此,假设您想根据用户的 id 获取用户的名称。在 REST API(这是更常见的方式)上,您将向服务器发送一个 GET 请求,它会以 JSON 响应该用户的所有数据。

// Imagine this is your request to the server
await api.get(http://myserver.com/user/1)

// Imagine this is your JSON response

  name: "Person",
  age: 24,
  address: "Avenue Street, number 7",
  ...

您会发现,即使您只是想要用户名,但您在使用 REST API 时却获得了所有数据。但对于 GraphQL,情况并非如此。您只能请求所需的数据。

// Your request to the server would look like this

  GetUserById(1) 
    name
  


// In the response you would be getting a JSON with only the data that you requested


  name: "Person"


这就是 GraphQL 的用途,向您的后端请求特定数据并只接收您需要的数据。在这两种情况下,REST API 和 GraphQL,您都可以使用 Prisma。它将帮助您在数据库中搜索所请求的数据。

如果您想了解更多关于 Prisma 的信息,您可以查看他们的website,在那里您可以找到更多关于它的工作原理和使用方法的信息。

如果您想了解更多关于 GraphQL 的信息,可以查看他们的FAQ page

您还可以学习如何一起使用Prisma and GraphQL

【讨论】:

非常感谢您的彻底回复。我很困惑,但是在建立了一个小环境并使用了 graphql 的模式和解析器的第一手资料之后,我能够看到它的目的和它的力量。谢谢!

以上是关于prisma 可以实现与 graphql 相同的功能吗?的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL/Prisma 订阅仅针对 DELETE 触发

GraphQL / Prisma 中的相同类型关系

GraphQL(Prisma)突变数据未定义

将 GraphQL/Prisma 字段设为私有/无法查询

Prisma v2:生成一个 .graphql 文件来编辑?

将 Stripe webhook 与 graphql-yoga 和 Prisma 一起使用