如何使用 apollo 缓存来匹配作为子数组/子 ID 列表的输入变量?
Posted
技术标签:
【中文标题】如何使用 apollo 缓存来匹配作为子数组/子 ID 列表的输入变量?【英文标题】:How do I use apollo cache to match an input variable that is a sub array/sub list of ids? 【发布时间】:2021-07-20 06:00:39 【问题描述】:如何使用 apollo 缓存来匹配作为缓存中 id 的子数组/子列表的输入变量?
特别是,当我执行 apollo 查询时,我想返回一个参数列表子集的响应。
换一种说法,我怎样才能在缓存中添加额外的条目,以便我的缓存可以匹配未来的“子查询”,例如
fetch(
variables:
ids: ['1']
)
当我之前询问过
fetch(
variables:
ids: ['1', '2', '3']
)
下面的完整示例:
// This code is not working, but just used to illustrate an example.
const [fetch, data] = useQuery( /* graphql params here */ );
// Apollo cache will cache the response for `ids: ['1', '2', '3']`
fetch(
variables:
ids: ['1', '2', '3']
)
// In these subsequent call, I don't want to hit the server and want to hit the cache.
// Can I leverage apollo cache for this?
fetch(
variables:
ids: ['1']
)
fetch(
variables:
ids: ['2','3']
)
fetch(
variables:
ids: ['1','2']
)
【问题讨论】:
目前正在研究这些缓存访问策略:apollographql.com/docs/react/caching/cache-interaction。假设 fetch 返回一个人员列表。我正在考虑使用readFragment
来查找有关人员的缓存数据,对于信息不在缓存中的人员,我将对人员 ID 的子集调用 fetch。
【参考方案1】:
您应该能够将Key arguments 或read function 之一用于相关类型。
【讨论】:
以上是关于如何使用 apollo 缓存来匹配作为子数组/子 ID 列表的输入变量?的主要内容,如果未能解决你的问题,请参考以下文章
在查询上遇到子选择,但是存储没有对象引用 Apollo Link State