具有自定义类型属性的DynamoDB表的Graphql突变查询

时间:2018-09-16 10:12:06

标签: graphql aws-appsync

在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表中进行。 这是我的疑问:

  • 需要为Projects&Experience创建单独的dynamodb表。 如何为此表编写变异查询以更新项目和 差异突变方面的经验?

1 个答案:

答案 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将数据写入多个表中。