Из реле spec :
«Edge Type» должен содержать поле с именем node.Это поле должно возвращать либо Scalar, Enum, Object, Interface, Union, либо ненулевую оболочку вокруг одного из этих типов.В частности, это поле не может возвращать список.
Другими словами, SectionRowConnection
не соответствует требованиям Relay для типа соединения, поскольку его поле узла является списком.Для этого нет обходного пути, кроме изменения схемы таким образом, чтобы тип node
был SectionItem!
вместо [SectionItem]
.Если вы хотите использовать Relay, ваша схема должна соответствовать спецификации Relay.
Само соединение представляет собой набор отдельных узлов (или «ресурсов», если мы заимствуем терминологию REST), причем каждое ребро соединяет кореньузел к отдельному узлу в коллекции.
Например, мы можем представить один узел пользователя с полем friends
, которое возвращает UserConnection.Каждое ребро в соединении будет представлять связь между исходным узлом пользователя и одним из друзей-друзей.Каждое ребро будет иметь один пользовательский узел.
Эта коллекция пользовательских узлов может быть естественным образом отсортирована и отфильтрована по мере необходимости.Однако если бы мы хотели сгруппировать их вместе по некоторым критериям (аналогично GROUP BY
в SQL), мы бы создали отдельный тип UserGroup и UserGroupConnection.Каждый узел UserGroup внутри UserGroupConnection сам по себе будет иметь некоторое поле, которое является UserConnection.Даже в этом сценарии у каждого края соединения все еще есть только один узел .
Из вашей схемы неясно, пытались ли вы просто выполнить простую фильтрацию или «группировать» свои узлы, как показано выше,В любом случае, концептуально, нет никаких причин, чтобы когда-либо ребро возвращало List для своего поля node
.