Схемы GraphQL, которые реализуют спецификацию Relay , используют Типы соединений для моделирования отношений один-ко-многим или многие-ко-многим.
Каждое соединение включает в себя список ребер и объект PageInfo
. Каждое ребро включает node
и cursor
для этого узла.
Края также могут содержать дополнительные поля - например, если у нас есть связь с друзьями между узлами пользователя, мы можем включить временные метки, когда были созданы дружеские отношения. Обычно, однако, края используются только для поля cursor
, которое они выставляют. Значение cursor
используется при разбиении на страницы через соединение и обнажении его для каждого края, что означает, что вы можете начать разбивку на страницы с любой произвольной точки в результатах. Курсор не включен как часть узла, поскольку он может указывать c для соединения, а не только для самого узла (например, некоторые курсоры кодируют критерии сортировки).
Однако, если он является клиентом вам не нужно разбивать на страницы результаты соединения и просто извлекать все узлы, возможно, вам не нужны курсоры. В этом сценарии ios наличие ребер не добавляет никакого значения, а просто увеличивает глубину вашего запроса. В результате, для удобства клиента, некоторые службы GraphQL решили выставить только узлы для соединения в дополнение к краям.