Используя Relay и GraphQL, предположим, что у меня есть схема, возвращающая средство просмотра, и встроенный список связанных документов. Корневой запрос (составленный из фрагментов) будет выглядеть примерно так:
query Root {
viewer {
id,
name,
groups {
edges {
node {
id,
name,
}
}
}
}
}
Это позволит мне отобразить пользователя и список всех связанных с ним групп.
Теперь предположим, что я хочу, чтобы пользователь мог щелкнуть этот элемент списка и развернуть его, чтобы отобразить комментарии, связанные с этим конкретным элементом списка. Как мне реструктурировать свой запрос для маршрута ретрансляции, чтобы я мог получать эти комментарии? Если я добавлю край комментариев к краю моей группы, не будет ли он получать комментарии для всех групп?
query Root {
viewer {
id,
name,
groups {
edges {
node {
id,
name,
comments {
edges {
node {
id,
content
}
}
}
}
}
}
}
}
Или мне следует изменить запрос маршрута, чтобы найти конкретную группу?
query Root {
group(id: "someid"){
id,
name,
comments {
edges {
node {
id,
content
}
}
}
},
viewer {
id,
name,
groups {
edges {
node {
id,
name,
}
}
}
}
}
Меня беспокоит, в частности, использование этого в контексте relay
. То есть, как я могу эффективно построить маршрутный запрос, который будет извлекать только комментарии для элемента (или элементов) расширенного списка, при этом используя уже существующие кэшированные данные, и которые будут обновляться при выполнении мутаций? Приведенный выше пример может работать для конкретной расширенной группы, но я не уверен, как я могу расширить несколько групп одновременно, не извлекая эти поля для всех элементов группы.