GraphQL с apollo-client, возможно ли иметь одинаковые идентификаторы и разные имена

У меня был вопрос, и я не могу найти его в документации. Например у меня есть список

продукты с идентификаторами 1,2,3,4

И у меня есть другой список, категории с идентификаторами 1,2,3,4,

пример запроса

{
  products {
     id
     name
     categories {
     id
     name
     }
  }
}

Мы видим, что они оба имеют одинаковые идентификаторы, но разные имена внутри apollo. Будет ли это создавать какие-либо проблемы при кэшировании данных? Поскольку Apollo нормализует наши данные с помощью идентификаторов, мы будем благодарны за помощь.

1 ответ

Решение

Аполлон нормализует, используя как __typename а также id (или же _id), поэтому наличие Продукта и Категории с одинаковым идентификатором обычно не вызывает проблем.

Клиент обычно добавляет __typename для каждого набора, выбранного в вашем запросе - так что вам не нужно фактически добавлять __typename выставь себя

Объект конфигурации, переданный в InMemoryCache, включает в себя addTypename свойство, которое по умолчанию true, Если вы установите значение false, то __typename поле не будет добавлено, и вы увидите проблемы с кешем в этом сценарии, если у вас нет универсально уникальных идентификаторов.

Другие вопросы по тегам