【问题标题】:Internally, how does relay cache pagination for subqueries?在内部,如何为子查询中继缓存分页?
【发布时间】:2016-05-08 10:43:32
【问题描述】:

假设我有一个博客:

  • 1 个博客有很多帖子
  • 1 个帖子有很多赞
  • 1 个帖子有很多 cmets
  • 1 条评论有很多赞

在我博客的首页,我想展示前 10 篇文章。对于每个帖子,我想显示最近的 10 个喜欢的人、最近的 5 个 cmet 和最近喜欢每条评论的 10 个人。 (数字不重要,我只是在设置类似于 facebook 的东西)。

所以我的查询可能看起来像这样:

query getPosts(
  $postCount: Int, 
  $likersCount: Int, 
  $commentCount: Int, 
  $commentCursor: ID,
  $commentLikersCount: Int) {
  recentPosts(first: $postCount) {
    id,
    title, 
    body,
    likers(first: $likersCount) {
      id,
      name
    },
    comments(first: $commentCount, after: $commentCursor) {
      id,
      title,
      body,
      likers(first: $commentLikersCount) {
        id,
        name
      },
    }
  }
}

如果我使用新的$commentCursor 重新提交此查询以加载更多 cmets,中继如何缓存数据以便知道在本地获取其他所有内容?我得到了商店的基本图形架构,但是对于像这样的嵌套事物,我在调试器中感到困惑。

【问题讨论】:

    标签: relayjs


    【解决方案1】:

    通常您会通过更改 first: $commentCount 参数来扩展分页范围,而您不会使用 after 参数。只需说您将$commentCount5 更改为10,Relay 知道获取位置 6 到 10 的项目,因为它已经拥有从 1 到 5 的项目。具体来说,你会看到它发出一个 @ 987654326@ 查询,其中<cursor> 是第 5 条评论的光标(为此,Relay 会自动获取连接中每个边缘的光标,即使您没有明确要求它们)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2014-07-10
      • 2017-07-11
      • 2021-03-07
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      相关资源
      最近更新 更多