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

How to PUT / UPDATE nested data with GraphQL?

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

type User {
    id: ID!
    name: String!
    records: [Records!]!
}
type Records {
    id: ID!
    userId: ID!
    title: String!
    ... etc ...
}

使用 AppSync 界面,我在 DynamoDB 中单击 Create Resources 一次创建记录 table 并再次创建用户 table。这还会自动向我的模式添加突变、订阅、输入类型和更多类型,并为我创建解析器。

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

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

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

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

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

解析器的响应映射模板将负责将 DynamoDB BatchPutItem 操作的结果转换为您的变更的returntype/structure。

这是一个关于如何在解析器中使用 multi-table 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