【问题标题】:Update-ing dynamodb item using Appsync使用 Appsync 更新 dynamodb 项目
【发布时间】:2019-02-16 02:37:36
【问题描述】:

在 AppSync 中,我想用这样的数组或字符串集更新项目:

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

这是我的突变类型的外观:

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

我的问题是如何看待这种突变的解析器。 谢谢! :)

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 嘿,谢谢,但我不确定这是我需要的,也许我的问题没有很好地形成,我对此还是新手。因此,我需要使用通过字符串集格式或任何集合格式的突变参数传递的元素更新 dynamodb 表中的一列。我找到了很好的示例(示例 2)docs.aws.amazon.com/appsync/latest/devguide/…,但我在 #metadata = :metadata 附近仍然有 InvalidUpdateExpreesion 语法错误。我找不到我的错误在哪里。谢谢
    • @Tinou,我已经复制了你的代码,它只是返回一个空值而不是更新。有没有办法获取日志文件或更多信息。
    • @tkerwood 您可以通过控制台在 AppSync API 上启用对 CloudWatch 的日志记录,例如在设置页面上。 docs.aws.amazon.com/appsync/latest/devguide/monitoring.html
    猜你喜欢
    • 2018-12-02
    • 2017-03-01
    • 2019-09-03
    • 2019-01-06
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多