특정 GraphQL 엔드 포인트를 사용하고 있으며 깨끗한 JSON 구조를 쿼리로 제공하고 있지만 결과를 얻으면 “edges”및 “node”태그가 표시됩니다. 명백한 이점없이 내 데이터를 오염시키는 것처럼 보입니다. 왜 거기에 있고 더 빠르고 간단한 데이터 구문 분석을 위해 제거 할 수 있습니까?
답변
간단한 단어로 짧은 소개부터 시작하겠습니다
GraphQl 릴레이 사양
- 개체를 다시 가져 오는 메커니즘
- 연결을 통해 페이징하는 방법에 대한 설명
- 예측 가능하도록 돌연변이 주변의 구조
사이:
- 연결은
edges
,pageInfo
… 와 같은 메타 데이터가있는 개체의 모음입니다 . -
pageInfo이 포함
hasNextPage
,hasPreviousPage
,startCursor
,endCursor
hasNextPage
사용 가능한 가장자리가 더 있는지 또는이 연결의 끝에 도달했는지 알려줍니다.
-
레코드 배열 : 가장자리
- Edge는 데이터 (노드)를 사용할 수있는 유연성을 제공합니다.
- edge는 페이지 매김에 도움이 될 것입니다. graphql이
GraphQLList
있지만 페이지 매김과 같은 기능은없고 객체 배열 (데이터)에만 해당됩니다.
-
각 모서리에는
- a
node
: 레코드 또는 데이터 - a
cursor
: 페이지 매김으로 릴레이하는 데 도움이되는 base64 인코딩 문자열
- a
https://facebook.github.io/relay/graphql/connections.htm
마디:
- 릴레이를 사용하여 표시해야하는 노드 수를 설정할 수 있습니다.
connectionArgs(first, last, after, before)
릴레이 페이지 매김은 다음과 같이 작동합니다.
-
컬렉션의 모든 개체를 가져오고
first/last
connectionArgs를 통해 사용되는 x 레코드를 기반으로 슬라이스를 반환 합니다. -
after/before
노드의 커서를 사용하여 필요한 슬라이스 (데이터) 수를 GraphQL 서버에 표시하는 데 사용됩니다.
nodeDefinitions
,, globalFieldId
등 고려할 사항이 더 많이 있습니다 .nodeInterfaces
https://github.com/graphql/graphql-relay-js#object-identification