GraphQL + Apollo - 如何强制进行查询,似乎正在缓存某些内容

GraphQL + Apollo - How to forcefully make the query, appears something is being cached

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

我有一个 GraphQL 服务器 运行 Spring Boot.

我注意到一个问题,每当我的查询选项(在 variables 中设置)相同时,它实际上并没有使 query/call 成为 GraphQL 服务器,而是它似乎正在使用缓存中的结果。

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

这是我在前端调用 get 函数的服务 - 我希望有一些选项,例如 forceRefetch: true:

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

谢谢。

Apollo Client 的默认获取策略是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.