【发布时间】:2018-03-22 06:34:22
【问题描述】:
给定一个简单的架构:
type Feed {
posts:[Post]
authors:[Author]
}
type Post {
title:String
authorId:String
author:Author
}
type Author {
id:String
name:String
...
}
消费应用可以通过两种不同的方式继续请求帖子及其作者的供稿: 1)列出作者的“正常”方式:
Feed { posts { title, author { name } } }
2) 一种让应用自行编制作者索引并因此限制响应正文大小的方法(因为只有唯一的作者会回复其详细信息)。
Feed { posts { title, authorId } authors {id, name} }
然而,这在解析查询/作者时带来了问题,因为所需作者 ID 的列表只有在解析帖子后才知道,因此需要作者解析等待帖子解决。
简而言之:字段需要能够等待“姐妹”字段的解析,然后才能自行解析。
一种方法是创建一个事件发射器,通过请求上下文共享。这确实可以解决问题,但是... 我想知道是否有更好/更优雅的解决方案?
仅供参考:上面的例子被简化了,在我的用例中,有多个字段与“实体”保持关系,这使得“索引方法”的案例效率更高。
type RelationType1 { entityId }
type RelationType2 { entityId, owningEntityId }
type RelationType3 { entityId, owningEntityId, representedEntityId }
type Item { rel1:[RelationType1], rel2:[RelationType2], rel3:[RelationType3] ... }
...
【问题讨论】: