我的AWS AppSync和ApolloClient存在问题。 如何在名为AppSync的Amazon Service中使用用户之间的关联,即作为节点和边缘的连接。我想要做的是当我关注用户时,我希望通过一个请求看到所有用户的流量。 这是我想要的要求。我如何为此构建一个结构?
query {
getFeeds(id:"myUserId") {
following {
userFeed {
id
ImageDataUrl
textData
date
}
}
}
}
我创建的架构如下
type Comments {
id: ID!
date: Int!
message: String!
user: User
}
type Feed {
id: ID!
user: User!
date: Int!
textData: String
ImageDataUrl: String
VideoDataUrl: String
likes: Like
comments: [Comments]
}
#Objects
type Like {
id: ID!
number: Int!
likers: [User]
}
}
type Query {
getAllUsers(limit: Int): [User]
}
type User {
id: ID!
name: String!
email: String!
imageUrl: String!
imageThumbUrl: String!
followers: [User]
following: [User]
userFeed: [Feed]
}
schema {
query: Query
}
答案 0 :(得分:4)
今天可以在AppSync中使用。
要实现此目的,您可以向名为getUser
的架构添加查询字段(getUser
在这种情况下比getFeeds
更有意义)并且它将有一个解析器来检索来自数据源的用户对象。
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
)的结果来查询用户订阅源数据。