我正在使用Apollo Client,但确实从我的服务器请求了非常结构化的数据集。
-显示
id
标题
...
-季节
数字
-剧集
id
数字
广播
由于标准化,我的剧集是单独存储的,但我无法对其进行查询。例如,我想查询所有情节,然后按日期对它们进行排序以显示下一个。
我看到的唯一方法是要么将我的节目列表“缩小”为一集情节,然后进行过滤。或对服务器进行新查询。 但是,如果我可以获取缓存中所有情节的列表,它将更快。 不幸的是,使用readFragment只能按其ID查询一个对象。
问题: 有没有一种方法可以查询缓存中所有已定义类型的对象?
答案 0 :(得分:0)
答案很晚,但可以帮助其他人,目前阿波罗不支持。这是来自github的问题,也是一个解决方法。 https://github.com/apollographql/apollo-client/issues/4724#issuecomment-487373566
这是@ 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,
}))
请注意,此方法很慢,尤其是当您有大量标准化数据时。