我正在使用AWS AppSync尝试我的第一个GraphQL后端。我只想弄清楚如何使用一对多关联。我期望将许多相关对象作为子项列表接收,并且能够在创建新用户时编写其中一些子项。
type User {
id: ID!
name: String!
records: [Records!]!
}
type Records {
id: ID!
userId: ID!
title: String!
... etc ...
}
使用AppSync界面,我点击Create Resources
一次制作一个记录表,然后再次在DynamoDB中创建一个Users表。这也会自动为我的架构添加突变,订阅,输入类型和更多类型,并为我创建解析器。
创建与我的User对象关联的Record对象的变异的语法是什么?如何在创建用户时输入记录数据?
如果需要,我可以包含更多AppSync自动生成的模式。
答案 0 :(得分:3)
由于您使用的是两个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