带有 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 使用 __typename
和 id
(或 _id
)字段进行规范化,因此具有相同 ID 的产品和类别通常不会导致任何问题。
客户端通常会为查询中的每个选择集附加 __typename
-- 因此您不必自己实际添加 __typename
字段。
传递给 InMemoryCache 的配置对象包括 addTypename
属性,默认为 true
。如果您将此设置为 false,则不会添加 __typename
字段,并且在这种情况下您会看到缓存问题,除非您具有普遍唯一的 ID。
我有一个问题,但在文档中找不到。 例如我有一个列表
ID 为 1,2,3,4
我还有另一个列表,类别 ID 为 1,2,3,4
。
示例查询
{
products {
id
name
categories {
id
name
}
}
}
我们可以看到它们在 apollo 中具有相同的 id 但不同的 typename。 缓存数据时会产生任何问题吗?当 Apollo 使用 id 规范化我们的数据时, 帮助将不胜感激。
Apollo 使用 __typename
和 id
(或 _id
)字段进行规范化,因此具有相同 ID 的产品和类别通常不会导致任何问题。
客户端通常会为查询中的每个选择集附加 __typename
-- 因此您不必自己实际添加 __typename
字段。
传递给 InMemoryCache 的配置对象包括 addTypename
属性,默认为 true
。如果您将此设置为 false,则不会添加 __typename
字段,并且在这种情况下您会看到缓存问题,除非您具有普遍唯一的 ID。