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 触发