我在我的React应用程序中使用ApolloClient。
我有一个使用Spring Boot运行的GraphQL服务器。
我注意到的一个问题是,每当我的查询选项(在variables
中设置)相同时,它实际上并不会进行查询/调用GraphQL服务器,而是似乎使用了来自缓存。
由于数据可能已更改,我如何强迫它进行实际搜索?
[这是我在前端中调用get
函数的服务-我希望有一些类似forceRefetch: true
的选项:
return graphQLClient
.query<MultipleSongsQueryResult>({
query: GET_SONGS,
variables: options,
})
.then(response => response.data);
谢谢。
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。