在 GraphQL 中,"edges" 和 "node" 是什么意思?
In GraphQL what's the meaning of "edges" and "node"?
我正在使用 GraphQL 端点,我得到的结果包含 edges
和 node
标签。我为我的查询提供了一个干净的 JSON 结构,所以这对我来说没有意义。
似乎 GraphQL 服务器正在污染我的数据,但没有明显的好处。为什么这些术语包含在 GraphQL 端点的响应中,是否有可能摆脱那些用于 faster/simpler 数据解析的术语?
让我们先简单介绍一下
GraphQl 中继规范
- 重新获取对象的机制
- 描述如何通过连接分页
- 围绕突变构建结构以使其可预测
连接数:
- 连接是具有元数据的对象集合
例如
edges
、pageInfo
...
pageInfo 将包含 hasNextPage
、hasPreviousPage
、startCursor
、endCursor
hasNextPage
会告诉我们是否有更多可用边,或者我们是否已到达此连接的末尾。
记录数组:edges
- edges 将为您提供使用数据(节点)的灵活性
- edges 将帮助您进行分页,有 graphql
GraphQLList
但没有分页等功能,只有对象数组(数据)
每条边有
- a
node
: 一条记录或一条数据
- a
cursor
: base64 编码的字符串以帮助中继分页
https://facebook.github.io/relay/graphql/connections.htm
节点:
- 您可以使用中继设置您需要显示的节点数
connectionArgs(first, last, after, before)
中继分页工作方式为
获取集合中的所有对象和 return 基于 first/last
x 记录的切片,通过 connectionArgs
使用
after/before
用于向 GraphQL 服务器指示使用来自节点的游标所需的切片(数据)的数量
还有很多事情需要考虑,例如 nodeDefinitions
、globalFieldId
、nodeInterfaces
https://github.com/graphql/graphql-relay-js#object-identification
GraphQL 代表图形查询语言,有两部分:服务器和客户端。服务器有效地将图形结构放在您的数据库前面,您的查询正在遍历 graph.
在计算机科学领域:
- 一个图是一个网络
- a node 是该网络中的顶点之一
- 一个边是节点之间的链接之一
综上所述,GraphQL 查询有效地要求 GraphQL 服务器实例遍历其数据图并找到该数据的某种表示形式。您会在查询中看到 edges
和 node
,因为您实际上是在查看图表中的这些条目。
allXYZ
条记录的典型查询如下所示:
{
_allXYZ {
edges {
node {
// your data shape will be in here
}
}
}
}
我正在使用 GraphQL 端点,我得到的结果包含 edges
和 node
标签。我为我的查询提供了一个干净的 JSON 结构,所以这对我来说没有意义。
似乎 GraphQL 服务器正在污染我的数据,但没有明显的好处。为什么这些术语包含在 GraphQL 端点的响应中,是否有可能摆脱那些用于 faster/simpler 数据解析的术语?
让我们先简单介绍一下
GraphQl 中继规范
- 重新获取对象的机制
- 描述如何通过连接分页
- 围绕突变构建结构以使其可预测
连接数:
- 连接是具有元数据的对象集合
例如
edges
、pageInfo
... pageInfo 将包含
hasNextPage
、hasPreviousPage
、startCursor
、endCursor
hasNextPage
会告诉我们是否有更多可用边,或者我们是否已到达此连接的末尾。
记录数组:edges
- edges 将为您提供使用数据(节点)的灵活性
- edges 将帮助您进行分页,有 graphql
GraphQLList
但没有分页等功能,只有对象数组(数据)
每条边有
- a
node
: 一条记录或一条数据 - a
cursor
: base64 编码的字符串以帮助中继分页
- a
https://facebook.github.io/relay/graphql/connections.htm
节点:
- 您可以使用中继设置您需要显示的节点数
connectionArgs(first, last, after, before)
中继分页工作方式为
获取集合中的所有对象和 return 基于
first/last
x 记录的切片,通过 connectionArgs 使用
after/before
用于向 GraphQL 服务器指示使用来自节点的游标所需的切片(数据)的数量
还有很多事情需要考虑,例如 nodeDefinitions
、globalFieldId
、nodeInterfaces
https://github.com/graphql/graphql-relay-js#object-identification
GraphQL 代表图形查询语言,有两部分:服务器和客户端。服务器有效地将图形结构放在您的数据库前面,您的查询正在遍历 graph.
在计算机科学领域:
- 一个图是一个网络
- a node 是该网络中的顶点之一
- 一个边是节点之间的链接之一
综上所述,GraphQL 查询有效地要求 GraphQL 服务器实例遍历其数据图并找到该数据的某种表示形式。您会在查询中看到 edges
和 node
,因为您实际上是在查看图表中的这些条目。
allXYZ
条记录的典型查询如下所示:
{
_allXYZ {
edges {
node {
// your data shape will be in here
}
}
}
}