GraphQL с apollo-client, возможно ли иметь одинаковые идентификаторы и разные имена - PullRequest
0 голосов
/ 26 марта 2019

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

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

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

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

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

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

1 Ответ

2 голосов
/ 26 марта 2019

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

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

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

...