graphql 中用于分页的连接

Posted

技术标签:

【中文标题】graphql 中用于分页的连接【英文标题】:Connections in graphql for pagination 【发布时间】:2020-09-30 14:55:52 【问题描述】:

我是 graphql 的新手,正在尝试了解连接如何用于分页。我在这里关注文档:https://graphql-ruby.org/pagination/using_connections.html。 我可以使用connection_type 在graphiql 中查看User

field :allUsers, Type::MyUsers.connection_type, null: false

      def allUsers
        Users.all
      end

如果我想查看 User-Post 数据,我无法理解如何按照文档在 Make connection fieldsReturn collections 中编写代码。 对于 Users-Post 关系,我将返回类型嵌套在 Type::MyUsers 中,类似于:

class myUsers < GraphApi::BaseObject
      field :name, String, null: false
      field :created_at, GraphQL::Types::ISO8601DateTime, null: true
      field :userPosts, Types::myPosts.connection_type, null: true
end

我如何在帖子中获取数据,以便当我在 graphiql 中看到结果时应该是这样的:

query 
  users 
    pageInfo 
      hasNextPage,
      endCursor
    
    edges 
      node [
        name : "User1",
        userPosts 
          edges 
            nodes [
              body: "post1",
              body: "post2"
              ]
              
          
        ,
        name : "User2",
        userPosts 
          edges 
            nodes [
              body: "post12",
              body: "post22"
              ]
              
          
        
        ]
      
      
  

【问题讨论】:

【参考方案1】:

SOLN:唯一缺少的部分是:

class myUsers < GraphApi::BaseObject
      field :name, String, null: false
      field :created_at, GraphQL::Types::ISO8601DateTime, null: true
      field :userPosts, Types::myPosts.connection_type, null: true
      
      def userPosts
        object.posts
      end
end

解析器名称中有错字,因此它不起作用?

【讨论】:

以上是关于graphql 中用于分页的连接的主要内容,如果未能解决你的问题,请参考以下文章

Relay/GraphQL 将自定义字段添加到连接

用于 Java-GraphQL 服务器的 Java 中基于中继的分页

readQuery 不适用于 Apollo 和 GraphQL 应用程序中的分页

GraphQL:为常规列表实现窗口分页

GraphQL:是不是有相当于 TypeScript 的“未知”?

将 offsetLimitPagination 与过滤 Apollo Graphql 相结合