Должны ли грани GraphQL Relay с дополнительной изменяемой информацией также быть узлами?
Согласно спецификации подключения курсоров Relay GraphQL, ребра могут иметь дополнительную информацию. Как я понимаю, для
UserProjectConnection
, это может быть, например,
role
поле, определяющее роль пользователя в проекте. Однако, поскольку вы хотите иметь возможность сменить роль, я ожидаю, что такое преимущество также будет
Node
(т.е. с идентификатором), чтобы при изменении роли кеш на стороне клиента обновлялся автоматически.
Обычной практикой является создание ребер с (изменяемой) информацией для реализации
Node
интерфейс?
Следует отметить, что это означает, что у вас больше нет однозначного сопоставления типа объекта GraphQL с типом БД: поскольку отношения Пользователь / Проект являются двунаправленными отношениями и
Connection
однонаправленные отношения, у вас будет
UserProjectConnection
и
ProjectUserConnection
с теми же полями, сопоставленными с одним и тем же объектом БД, что означает, что ваш метод глобального идентификатора не может полагаться исключительно на объект БД и должен учитывать тип узла при создании идентификаторов.