json 在GraphQL中,“边”和“节点”的含义是什么?

muk1a3rh  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(120)

我正在使用一个GraphQL端点,我得到的结果包含edgesnode标签。我为我的查询提供了一个干净的JSON结构,所以这对我来说没有意义。
看起来GraphQL服务器污染了我的数据,没有明显的好处。为什么GraphQL端点的响应中包含了这些术语,有没有可能去掉这些术语,以便更快/更简单地解析数据?

c2e8gylq

c2e8gylq1#

让我们用简单的话开始简短的介绍
GraphQL继电器规格

  • 用于重取对象的机制
  • 如何在连接中分页的说明
  • 围绕突变的结构,使其可预测
    连接:
  • 连接是具有诸如edgespageInfo…的元数据的对象的集合。
  • pageInfo将包含hasNextPagehasPreviousPagestartCursorendCursor
  • hasNextPage将告诉我们是否有更多可用的边,或者我们是否已经到达连接的终点。
  • 记录数组:边缘
  • 边缘将为您提供使用数据(节点)的灵活性
  • 边缘将帮助你分页,有GraphQL GraphQLList,但没有分页等功能,只有对象数组(数据)
  • 每条边都有
  • a node:记录或数据
  • a cursor:base64编码字符串,以帮助中继分页

https://facebook.github.io/relay/graphql/connections.htm

节点:

  • 您可以使用中继connectionArgs(first, last, after, before)设置需要显示的节点数
    中继分页功能为
  • 获取集合中的所有对象,并根据first/last x x记录返回一个切片,通过connectionArgs使用
  • after/before用于使用节点中的游标向GraphQL服务器指示所需切片(数据)的数量

还有很多事情需要考虑,如nodeDefinitionsglobalFieldIdnodeInterfaces
https://github.com/graphql/graphql-relay-js#object-identification

fiei3ece

fiei3ece2#

GraphQL是Graph Query Language的缩写,有两个部分:服务器和客户端。服务器有效地在数据库前面放置了一个图结构,您的查询正在遍历该
在计算机科学中:

*graph是网络

  • anode是该网络中的一个顶点
    *是节点之间的链接之一

综合考虑所有这些,GraphQL查询有效地要求GraphQL服务器示例遍历其数据图并找到该数据的一些表示。您将在查询中看到edgesnode,因为您实际上正在查看图表中的这些条目。
allXYZ记录的典型查询如下所示:

{
  _allXYZ {
    edges {
      node {
        // your data shape will be in here
      }
    }
  }
}

相关问题