【问题标题】:Apollo Cache Redirects With a Returned PayloadApollo 缓存使用返回的有效负载重定向
【发布时间】:2018-12-26 22:55:24
【问题描述】:

离开 Apollo 的缓存重定向示例 (https://www.apollographql.com/docs/react/advanced/caching.html#cacheRedirect)

现在,我进行以下架构修改...

type Query {
   books: [BookPayload!]!
}
type BookPayload {
   books: [Book!]!
   // other stuff, e.g. bookCount: Int
}

在示例中,Apollo 可以通过以下方式检查是否有任何返回的书籍在缓存中:

cacheRedirects: {
  Query: {
    books: (_, args, { getCacheKey }) =>
      args.ids.map(id =>
        getCacheKey({ __typename: 'Book', id: id }))
  }
}

但是,当不直接返回要检查的类型时,我不确定如何重定向缓存。我尝试了所有返回的排列都无济于事。

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: graphql apollo react-apollo apollo-client


    【解决方案1】:

    你的问题不清楚。你说“当被检查的类型没有直接返回时,我不确定如何重定向缓存”,但你似乎正在检查并返回[BookPayload!]!

    因此,我看不出这不起作用的原因:

    cacheRedirects: {
      Query: {
        books: (_, args, { getCacheKey }) =>
          args.ids.map(id =>
            getCacheKey({ __typename: 'BookPayload', id: id }))
      }
    }
    

    【讨论】:

    • 图书有效载荷没有 id。它只是一个容器。此外,即使它有一个 id,这也行不通,因为您需要将书籍与缓存相匹配,而不是 BookPayload
    • @D.Walsh 嗯。那么只有 1 个BookPayload?我认为它保存在缓存中,id 为"$ROOT_QUERY.books" 然后(或者可能是"ROOT_QUERY.books")。我不确定这是否适用于缓存键功能。您也可以尝试将 undefined 作为 ID 传递。
    • @D.Walsh 如果您使用Apollo Chrome Extension 检查商店,您应该能够看到它的 ID。
    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 2020-09-13
    • 2019-09-25
    • 2018-12-26
    • 2018-12-15
    • 2020-01-02
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多