今天,在AppSync中可以做到这一点。
为此,您可以在架构中添加一个名为getUser
(getUser
比getFeeds
在这种情况下更有意义)的查询字段,并且它将具有一个解析器,该解析器从数据源中检索User对象。
type Query { getAllUsers(limit: Int): [User] getUser(id:ID!): User }
然后,您也可以在User.following
和User.userFeed
字段上添加解析程序。该User.following
解析器将查询数据源并检索其中有人跟随用户。该User.userFeed
解析器将查询数据源检索用户提要列表。
这两个解析器(User.following
和User.userFeed
)都应$context.source
在解析器的请求映射模板中使用。此变量将包含getUser
解析程序的结果。请求映射模板的工作是创建数据源可以理解的查询。
可能附带的示例请求映射模板可能User.following
类似于以下内容。它将查询名为“ Following”的表,该表的主分区键为id(用户的id):
{ "version" : "2017-02-28", "operation" : "Query", "query" : { ## Provide a query expression. ** "expression": "id = :id", "expressionValues" : { ":id" : { ## Use the result of getUser to populate the query parameter ** "S" : "${ctx.source.id}" } } } }
您将必须对User.userFeed
解析器执行类似的操作。
完成所有设置后,可以运行以下查询,然后将发生以下情况:
query { getUser(id:"myUserId") { following { userFeed { id ImageDataUrl textData date } } } }
getUser
解析器将首先运行。它将查询您的用户数据源并检索用户。
User.following
解析器将运行。它将使用其父字段解析器(getUser
)的结果来查询数据源以进行跟踪。
User.userFeed
解析器将运行。它将使用其父字段解析器(getUser
)的结果来查询用户供稿数据源。