Aws lambda AWS AppSync使用存在性检查解析程序将多个子项添加到一个父属性中

Aws lambda AWS AppSync使用存在性检查解析程序将多个子项添加到一个父属性中,aws-lambda,amazon-dynamodb,aws-appsync,vtl,Aws Lambda,Amazon Dynamodb,Aws Appsync,Vtl,我有一个关于AWS AppSync的问题。我想知道在将多个值添加到父属性的一个属性中时是否有方法检查存在性 下面是我的例子: 这是用户类型: 下面是dynamodb的外观: 下面是我想要完成的:在programs属性下,将三个程序添加到一个用户记录中。 这是我当前的解析器: 因此,我的逻辑是首先从dynamodb中提取现有的程序,然后检查“待添加”程序ID是否在其中。如果有,请停止更新或跳过该程序id。如果没有,请继续更新。所以问题是,如何使用VTL提取当前数据,以及如何比较现有数据和我

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

下面是我的例子:

这是用户类型:

下面是dynamodb的外观:

下面是我想要完成的:在programs属性下,将三个程序添加到一个用户记录中。

这是我当前的解析器:

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


或者如果有人对我如何完成这项任务有其他想法,请帮助我。非常感谢。我无法嵌入图片,因为我是stackoverflow的新手。很抱歉给您带来不便。祝您愉快。

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

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

非常感谢你。抱歉耽搁了。我确实尝试了“属性\u not\u exists(programId)”,但它不起作用。对于我的情况,我正在添加多个programid。我不知道这个条件表达式是否仍然有效。