【问题标题】:readFragment to return all object of a typereadFragment 返回一个类型的所有对象
【发布时间】:2020-09-09 18:02:04
【问题描述】:

我正在使用 Apollo Client 从我的服务器请求一个非常结构化的数据集。像

-显示
id<br>title
...<br>-季节
number
-剧集
id<br> number
airdate

感谢规范化,我的剧集被单独存储,但我无法查询它们。例如,我想查询所有剧集,然后按日期对它们进行排序以显示下一个。

我看到的唯一方法是将我的节目列表“减少”为一组剧集,然后进行过滤。或者对服务器进行新的查询。 但如果我能得到缓存中所有剧集的列表,它会快得多。 不幸的是,使用 readFragment 你只能通过它的 id 查询一个对象。

问题: 有没有办法在缓存中查询定义类型的所有对象?

【问题讨论】:

    标签: apollo-client


    【解决方案1】:

    答案晚了,但可以帮助别人,目前阿波罗不支持。这是来自 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,
    }))
    

    请注意,这种方法速度很慢,尤其是当您有大量标准化数据时。

    【讨论】:

      猜你喜欢
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 2021-08-15
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多