【问题标题】:GraphQL with apollo-client, Is it possible to have same id's and different typenames带有 apollo-client 的 GraphQL,是否可以有相同的 id 和不同的类型名
【发布时间】:2019-03-27 02:42:19
【问题描述】:

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

ID为1,2,3,4的产品

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

示例查询

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

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

【问题讨论】:

    标签: graphql apollo-client apollo-boost


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多