Apollo client readFragment返回类型的所有对象
我正在使用Apollo客户端从我的服务器请求一个非常结构化的数据集。差不多 -展示Apollo client readFragment返回类型的所有对象,apollo-client,Apollo Client,我正在使用Apollo客户端从我的服务器请求一个非常结构化的数据集。差不多 -展示 id 标题 … -季节 编号 -剧集 id 编号 airdate 由于规范化,我的剧集单独存储,但我无法查询它们。例如,我想查询所有剧集,然后按日期对它们进行排序,以显示下一集 我看到的唯一方法是将我的节目列表“减少”为一系列插曲,然后进行过滤。或者对服务器执行新查询。 但如果我能得到缓存中所有剧集的列表,速度会快得多。 不幸的是,对于readFragment,您只能通过其id查询一个对象 问题: 有没有办法查询
id
标题
…
-季节
编号
-剧集
id
编号
airdate
由于规范化,我的剧集单独存储,但我无法查询它们。例如,我想查询所有剧集,然后按日期对它们进行排序,以显示下一集
我看到的唯一方法是将我的节目列表“减少”为一系列插曲,然后进行过滤。或者对服务器执行新查询。
但如果我能得到缓存中所有剧集的列表,速度会快得多。
不幸的是,对于readFragment,您只能通过其id查询一个对象
问题:
有没有办法查询缓存中定义类型的所有对象?答案很晚,但可能对其他人有所帮助,目前apollo不支持。这是github的问题,也是一个解决方法。 这是@superandrew213复制的解决方法
const serializedState = client.cache.extract()
const typeNameItems = Object.values(serializedState)
.filter(item => item.__typename === 'TypeName')
.map(item => client.readFragment({
fragmentName: 'FragmentName',
fragment: Fragment,
id: item.id,
}))
请注意,这种方法的速度很慢,特别是当您有大量的标准化数据时