在Graphql Appsync中需要帮助
Appsync自定义类型:
type Employee {
id: ID!
name: String
experiences: [Experiences]
projects: [Projects]
}
Dynamo DB table Employee
Table: Employee
{
id:’’,
name:’’,
experience:[
{
company:’’,
from:’’,
till:’’
},
{
company:’’,
from:’’,
till:’’
}
],
projects:[
{
title:’’,
date:’’
},
{
title:’’,
date:’’
},
]
}
我们需要更新2个不同突变查询中的体验和项目,但更新应在同一dynamodb表中进行。 这是我的疑问:
答案 0 :(得分:0)
让我尝试回答您的问题:
我们需要在2个不同的变异查询中更新体验和项目,但更新应在同一dynamodb表中进行。
您可以在AppSync中创建一个数据源,并具有两个可解决此数据源的突变。这样,您的突变就可以接受一系列的Experience或Project类型,而您的解析器将负责写入此DynamoDB DataSource。
需要为Projects&Experience创建单独的dynamodb表。
这实际上取决于您的用例。拥有单独的DynamoDB表可帮助您使用辅助索引获取与[1:N]相关的类型。单独的表还可以帮助您对相关类型进行分页,而不是在单个调用中获取所有依赖项。如果最终使用单个表存储Employee / Projects / Experience,请参阅DynamoDB解析器中的Lists and Maps types部分。
如何为此表编写变异查询,以更新diff变异的项目和经验?
就像我提到的那样,您只需在Schema中定义2个可以接受类型列表的突变即可。在解析器中,您将写入适当的表。请参考AppSync中的following documentation on DynamoDB Resolvers。
或者,您也可以使用DynamoDB Batch Resolver将数据写入多个表中。