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

问题描述 投票:0回答:1

我在我的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个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.