带有 apollo-client 的 GraphQL,是否可以有相同的 id 和不同的类型名

GraphQL with apollo-client, Is it possible to have same id's and different typenames

我有一个问题,但在文档中找不到。 例如我有一个列表

ID 为 1,2,3,4

的产品

我还有另一个列表,类别 ID 为 1,2,3,4

示例查询

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

我们可以看到它们在 apollo 中具有相同的 id 但不同的 typename。 缓存数据时会产生任何问题吗?当 Apollo 使用 id 规范化我们的数据时, 帮助将不胜感激。

Apollo 使用 __typenameid(或 _id)字段进行规范化,因此具有相同 ID 的产品和类别通常不会导致任何问题。

客户端通常会为查询中的每个选择集附加 __typename -- 因此您不必自己实际添加 __typename 字段。

传递给 InMemoryCache 的配置对象包括 addTypename 属性,默认为 true。如果您将此设置为 false,则不会添加 __typename 字段,并且在这种情况下您会看到缓存问题,除非您具有普遍唯一的 ID。