使用Appsync更新dynamodb项目

时间:2018-09-11 14:40:01

标签: amazon-web-services graphql aws-appsync

在AppSync中,我想使用数组或字符串集更新项目,如下所示:

mutation addmeta{
  addMetaDataOnPhoto(id:"xyz", metadata:["word1", "word2",...]){
    metadata
  }
}

这是我的突变类型的样子:

type Mutatation{
    addMetaDataOnPhoto(id: String!, metadata: [String]!): Photo
}

我的问题是,该突变体应该如何看待解析器。 谢谢! :)

1 个答案:

答案 0 :(得分:1)

要在不替换整个项目的情况下更新属性,应使用UpdateItem DynamoDB operation

在您的示例中,如果要替换metadata数组,则请求映射模板应如下所示:

{
    "version" : "2017-02-28",
    "operation" : "UpdateItem",
    "key" : {
        "id" : { "S" : "${context.arguments.id}" }
    },
    "update" : {
        "expression" : "SET metadata = :vals",
        "expressionValues": {
            ":vals" : $util.dynamodb.toDynamoDBJson($ctx.args.metadata)      
        }
    }
}

注意: $util.dynamodb.toDynamoDBJson会将您的数组转换为DynamoDB typedValue。有关更多信息和实用程序,请参见AWS AppSync util reference