我有一个问题,在文档中找不到。 例如,我有一个列表
ID为1,2,3,4
的产品
我还有另一个列表,ID为1,2,3,4
的类别。
示例查询
{
products {
id
name
categories {
id
name
}
}
}
我们可以看到它们在阿波罗中都具有相同的ID,但类型名不同。 缓存数据时会产生任何问题吗?由于Apollo使用ID规范化了我们的数据, 帮助将不胜感激。
答案 0 :(得分:2)
Apollo使用__typename
和id
(或_id
)字段进行规范化,因此具有相同ID的Product和Category通常不会引起任何问题。
客户端通常会为查询中的每个选择集附加__typename
,因此您不必亲自添加__typename
字段。
传递给InMemoryCache的配置对象包括一个addTypename
属性,该属性默认为true
。如果将其设置为false,则除非您具有通用的唯一ID,否则不会添加__typename
字段,并且在这种情况下,您将看到缓存问题。