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:
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)。这绝对是正确的做法。问题可能与数据加载/过滤器有关。