Apollo client readFragment返回类型的所有对象

Apollo client readFragment返回类型的所有对象,apollo-client,Apollo Client,我正在使用Apollo客户端从我的服务器请求一个非常结构化的数据集。差不多 -展示 id 标题 … -季节 编号 -剧集 id 编号 airdate 由于规范化,我的剧集单独存储,但我无法查询它们。例如,我想查询所有剧集,然后按日期对它们进行排序,以显示下一集 我看到的唯一方法是将我的节目列表“减少”为一系列插曲,然后进行过滤。或者对服务器执行新查询。 但如果我能得到缓存中所有剧集的列表,速度会快得多。 不幸的是,对于readFragment,您只能通过其id查询一个对象 问题: 有没有办法查询

我正在使用Apollo客户端从我的服务器请求一个非常结构化的数据集。差不多

-展示
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,
}))
请注意,这种方法的速度很慢,特别是当您有大量的标准化数据时