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.
我在我的 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.