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
поле не будет добавлено, и вы увидите проблемы с кешем в этом сценарии, если у вас нет универсально уникальных идентификаторов.