【问题标题】:GraphQL + Apollo - How to forcefully make the query, appears something is being cachedGraphQL + Apollo - 如何强制进行查询,似乎正在缓存一些东西
【发布时间】:2020-03-13 00:22:52
【问题描述】:

我在我的 React 应用中使用 ApolloClient。

我有一个使用 Spring Boot 运行的 GraphQL 服务器。

我注意到一个问题,即每当我的查询选项(在variables 中设置)相同时,它实际上并没有进行查询/调用 GraphQL 服务器,而是似乎使用来自缓存。

由于数据可能已更改,我该如何强制它实际进行搜索?

这是我在前端调用 get 函数的服务 - 我希望有像 forceRefetch: true 这样的选项:

return graphQLClient
   .query<MultipleSongsQueryResult>({
      query: GET_SONGS,
      variables: options,
   })
.then(response => response.data);

谢谢。

【问题讨论】:

    标签: typescript spring-boot graphql react-apollo apollo-client


    【解决方案1】:

    Apollo 客户端的默认获取策略是cache-first,所以如果你进行两次相同的查询,第一次 Apollo 会从数据库中获取数据,第二次会从本地缓存中获取数据(这就是您的情况似乎正在发生的事情)。

    如果您希望始终从服务器获取数据,您可以将 fetch-policy 更改为 network-only,例如。

    这可能会帮助您确定哪种获取策略更适合您:https://www.apollographql.com/docs/react/api/react-apollo/#optionsfetchpolicy

    此外,如果您使用突变更改数据,您可以使用refetchQueries 选项从服务器重新加载数据:https://www.apollographql.com/docs/react/data/queries/#updating-cached-query-results

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 2017-02-10
      • 2014-03-02
      • 1970-01-01
      相关资源
      最近更新 更多