如何使用 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

如何通过数组检查字符串是不是具有匹配的子字符串

如何匹配 MongoDB 中的子文档数组?

如何从 Mongo DB 中的子文档数组中删除匹配条件的子文档

如何匹配MongoDB中的子文档数组?