AWS AppSync使用存在检查解析器将多个子级添加到一个父级属性中

时间:2018-07-02 13:29:32

标签: aws-lambda amazon-dynamodb aws-appsync vtl

我有一个AWS AppSync问题。我想知道是否有一种方法可以在将多个值添加到父项的一个属性中时检查存在性。

所以,这是我的示例:

这是用户类型: User type

这是dynamodb的样子: dynamodb item

这是我要完成的工作:在程序属性下,将三个程序添加到用户记录中。 the addProgramToUser mutation

这是我当前的解析器: the addProgramToUser resolver

所以我的逻辑是首先从dynamodb中提取现有程序,然后检查其中是否有“待添加”程序ID。如果存在,请停止更新或跳过该程序ID。如果没有,请继续更新。所以问题是,如何使用VTL提取当前数据,以及如何比较现有数据和我要添加的数据。

或者如果有人对我如何完成此任务有其他想法,请提供帮助。非常感谢。由于我是stackoverflow的新手,所以我无法嵌入图片。不便之处,敬请原谅。祝你有美好的一天。

1 个答案:

答案 0 :(得分:0)

似乎您可以为解析器的请求映射模板使用条件。条件表达式使您可以根据执行操作之前DynamoDB中已有对象的状态,告诉AWS AppSync和DynamoDB请求是否应该成功。例如,在您的情况下,仅当Dynamo中没有程序ID时,才希望UpdateItem请求成功。

{
   "version" : "2017-02-28",
   "operation" : "PutItem",
   "key" : {
      "id" : { "S" : "1" }
   },
   "condition" : {
      "expression" : "attribute_not_exists(programId)"
   }
}