如何使用 GraphQL 放置/更新嵌套数据?

rm.*_*etc 3 graphql aws-appsync

我正在尝试使用 AWS AppSync 构建我的第一个 GraphQL 后端。我只是想弄清楚如何使用一对多关联。我希望收到许多相关对象作为子对象列表,并且能够在创建新用户时写入其中一些子对象。

type User {
    id: ID!
    name: String!
    records: [Records!]!
}
type Records {
    id: ID!
    userId: ID!
    title: String!
    ... etc ...
}
Run Code Online (Sandbox Code Playgroud)

使用 AppSync 界面,我单击Create Resources一次创建记录表,然后再次单击创建用户表,这两个表都在 DynamoDB 中。这还会自动将突变、订阅、输入类型和更多类型添加到我的架构中,并为我创建解析器。

创建与我的 User 对象关联的 Record 对象的突变语法是什么?创建用户时如何放置记录数据?

如果需要,我可以包含 AppSync 自动生成的更多架构。

小智 5

由于您使用两个 DynamoDB 表(用户和记录),因此您需要在 CreateUser 突变期间进行两次 DynamoDB 调用。在单个突变中进行两次 DynamoDB 调用的一种方法是利用 DynamoDB 的BatchPutItem操作。

要使用 BatchPutItem,您需要修改附加到 CreateUser 突变的解析器。解析器负责获取您的 graphQL 请求,将其转换为 DynamoDB 操作,然后将 DynamoDB 操作的结果转换为 graphQL 响应。解析器有两个组件:请求映射模板和响应映射模板。

请求映射模板将负责获取突变参数并将其转换为 DynamoDB BatchPutItem 请求。

解析器的响应映射模板将负责将 DynamoDB BatchPutItem 操作的结果转换为突变的返回类型/结构。

以下是有关如何在解析器中使用多表 BatchPutItem 的教程:https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html

以下是使用解析器所需的模板语言的编程指南:https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-programming-guide.html