Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 带dynamodb解析器的AWS AppSync条件更新_Database_Amazon Web Services_Amazon Dynamodb_Aws Appsync - Fatal编程技术网

Database 带dynamodb解析器的AWS AppSync条件更新

Database 带dynamodb解析器的AWS AppSync条件更新,database,amazon-web-services,amazon-dynamodb,aws-appsync,Database,Amazon Web Services,Amazon Dynamodb,Aws Appsync,正在尝试使用Appsync dynamodb解析器对dynamodb中的项进行条件更新。当通过App sync queries面板测试条件更新时,通过提供不正确的用户名,即使操作完成,数据库也会更新为新值price和modificationDate。以下是解析程序的代码: { "version" : "2017-02-28", "operation" : "UpdateItem", "key" : { "id": $util.dynamodb.toDyna

正在尝试使用Appsync dynamodb解析器对dynamodb中的项进行条件更新。当通过App sync queries面板测试条件更新时,通过提供不正确的用户名,即使操作完成,数据库也会更新为新值price和modificationDate。以下是解析程序的代码:

{
    "version" : "2017-02-28",
    "operation" : "UpdateItem",
    "key" : {
        "id": $util.dynamodb.toDynamoDBJson($ctx.args.input.id)
    },
    "update" : {
        "expression" : "SET price = :price, modificationDate = :newDate",
        "expressionValues": {
            ":price" : { "N": $context.arguments.input.price },
            ":newDate": $util.dynamodb.toDynamoDBJson($util.time.nowISO8601())
        }
    },
    "condition" : {
        "expression"       : "username = :expectedOwner",
        "expressionValues" : {
            ":expectedOwner" : { "S" : "${context.identity.username}" }
        }
    }
}

条件表达式中有错误吗?

在我的脑海中,您的映射模板看起来是正确的。有几件事需要检查:

->更改
“id”:$util.dynamodb.toDynamoDBJson($ctx.args.input.id)
->
“id”:$util.dynamodb.toStringJson($ctx.args.input.id)

->下面是一个映射模板的示例,该模板使用Cognito用户池Auth进行条件检查。Cognito Identity/AWS IAM也应该如此

 {
     "version" : "2017-02-28",
     "operation" : "UpdateItem",
     "key" : {
        "id": $util.dynamodb.toStringJson($ctx.args.id)
      },
      "update" : {
          "expression" : "SET title = :title, modificationDate = :newDate, content = :content",
          "expressionValues": {
             ":title" : $util.dynamodb.toStringJson($ctx.args.title),
             ":newDate": $util.dynamodb.toStringJson($util.time.nowISO8601()),
             ":content": $util.dynamodb.toStringJson($ctx.args.content)
          }
      },
      "condition" : {
         "expression"       : "#sub = :expectedOwner",
         "expressionNames"  : { "#sub": "sub" },
         "expressionValues" : {
            ":expectedOwner" : { "S" : "${context.identity.sub}" }
         }
      }
}