【发布时间】:2019-02-15 16:28:24
【问题描述】:
是否可以查询 Apollo 客户端缓存以获取客户端上过滤数据的列表?
客户端从graphql服务器获取数据后,可以从Apollo开发工具中看到数据在本地缓存中。
如何在不访问服务器的情况下获得与一组“标签”匹配的“项目”类型列表?
type Item {
id: ID
text: String
tags: [String]
}
我认为这对于 Apollo-link-state 自定义解析器是可行的,但到目前为止还无法找出它的策略或在网上的任何地方找到示例。
我知道 Apollo 缓存了已经执行的查询的数据,并且可以使用 ID 和 .readFragment 访问它,但是如果数据已经存在于客户端缓存中,应该可以获得一个列表特定条件的数据?
更新:
具体要求如下
- 从服务器获取前 100 个 getItem 结果
- 用户在客户端通过一些标签过滤结果
- 显示已提取的 100 条记录中的过滤项目
- 从服务器获取更多记录以匹配过滤条件,以填充页面的其余部分,最多 100 个项目。
- 允许根据过滤条件进行分页。
随着使用量的增加,我们将缓存中的大部分项目,为大部分数据提供即时过滤体验。
确切的问题是我们是否可以使用 .readFragment 或 .readQuery 访问原始记录列表并在客户端动态过滤(如果可以的话/示例)?或者有其他的方式来看待这个?
【问题讨论】:
标签: javascript graphql apollo react-apollo apollo-client