Graphql 如何获取父节点';s ID作为参数?

Graphql 如何获取父节点';s ID作为参数?,graphql,Graphql,要求是: 获取X半径范围内特定日期播放的电影列表 对于每部电影,获取播放该电影的场地(按距离的顺序) 对于每个场地,获取当天正在播放电影的活动 当前模式为: type Query { movies ( first: Int after: String coordinates: CoordinatesInput! date: String ): MovieConnection! } type Movie implements Node { id:

要求是:

  • 获取X半径范围内特定日期播放的电影列表
  • 对于每部电影,获取播放该电影的场地(按距离的顺序)
  • 对于每个场地,获取当天正在播放电影的活动
  • 当前模式为:

    type Query {
      movies (
        first: Int
        after: String
        coordinates: CoordinatesInput!
        date: String
      ): MovieConnection!  
    }
    
    type Movie implements Node {
      id: ID!
      name: String!
      venues (
        first: Int
        after: String
        movieId: ID!
        coordinates: CoordinatesInput!
        date: String!
      ): VenueConnection!
    }
    
    type Venue {
      id: ID!
      name: String!
      events (
        date: String!
        venueId: ID!
        movieId: ID!
      ): EventConnection!
    }
    
    type Event implements Node {
      id: ID!
      venue: Venue!
      movie: Movie!
    }
    
    其中,
    *连接
    是一个实现细节

    实际上,我需要能够编写一个相当于以下内容的查询:

    query (
      $date: String!
      $coordinates: CoordinatesInput!
    ) {
      movies(
        date: $date
        coordinates: $coordinates
      ) {
        edges {
          node {
            id
            name
            venues(
              date: $date
              coordinates: $coordinates
              # WARNING! made up syntax
              movieId: $parent.parent.movieId
            ) {
              edges {
                node {
                  id
                  name
                  events (
                    date: $date
                    # WARNING! made up syntax
                    movieId: $parent.parent.parent.parent.movieId
                    venueId: $parent.parent.venueId
                  ) {
                    edges {
                      node {
                        id
                        date
                        time
                        timestamp
                        url
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    
    就我所知,的规范没有描述在参数中引用父节点的方法


    什么有效…颠倒问题

    问题的反面很简单。我所需要的就是通过日期和地点来定义活动,然后检索与该活动相关的地点和电影,例如

    getEventsByDateAndLocation(date: "2017-05-18", location: [..]) {
      id
      venue {}
      movie {}
    }
    
    这种方法的问题是,它会大幅增加服务器响应,例如,如果我们每页显示200个事件,并且
    电影
    /
    场馆
    大小为1kb,则响应会突然变为400kb(ungziped)。如果记录被规范化,响应将为20kb。这是一个很大的区别

    一个可能的解决方案是发出两个请求:一个用于检索事件列表(以及所需的标识符),另一个用于检索实际资源,例如

    getEventsByDateAndLocation(date: "2017-05-18", location: [..]) {
      id
      venue {
        id
      }
      movie {
        id
      }
    }
    
    (后面是一个批处理查询,通过ID检索
    场馆
    电影


    这有数据合成复杂性的缺点。

    有趣。我很好奇为什么第一个
    getEventsByDateAndLocation
    查询要大得多(20kb标准化为1kb)。这绝对是正确的做法。问题可能与数据加载/过滤器有关。有趣。我很好奇为什么第一个
    getEventsByDateAndLocation
    查询要大得多(20kb标准化为1kb)。这绝对是正确的做法。问题可能与数据加载/过滤器有关。