AWS查询返回提供的键元素与架构不匹配

时间:2018-06-27 05:48:15

标签: amazon-web-services amazon-dynamodb

我是AWS的新手,我正在尝试使用查询更新DynamoDB中的值,并且它在错误以下返回我

  

提供的键元素与架构不匹配

代码已完成,响应列在下面

  

错误响应

    {
  "data": {
    "updateIsRead": null
  },
  "errors": [
    {
      "path": [
        "updateIsRead"
      ],
      "data": null,
      "errorType": "DynamoDB:AmazonDynamoDBException",
      "errorInfo": null,
      "locations": [
        {
          "line": 30,
          "column": 3
        }
      ],
      "message": "The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: 7ELPDK32SD0K9TGT31J03ANHVNVV4KQNSO5AEMVJF66Q9ASUAAJG)"
    }
  ]
}
  

查询

//I want to update the isRead key value to true of below messageId

    mutation UpdateISRead{
      updateIsRead(input:{messageId:"3253b0b4-6645-4df2-952f-93694cc70af3"}){
        messageId
      }
    }
  

模式

type Mutation {
   updateIsRead(input: MessageIDInput!): MessageRecipient
}

type MessageRecipient {
    messageId: ID!
    messageRecipientId: String!
    receiverId: String!
    isRead: Boolean!
}
  

Mutation.updateIsRead解析器

{
    "version" : "2017-02-28",
    "operation" : "UpdateItem",
    "key" : {
         "messageId" : $util.dynamodb.toDynamoDBJson($ctx.args.messageId)
    },
 "update" : {
         "expression" : "SET #fieldName = :fieldValue",
         "expressionNames" : {
              "#fieldName" : "isRead"
         },
         "expressionValues" : {
            ":fieldValue" : { "BOOL" : true }
         }
        }
}

在此方面的任何帮助都将不胜感激。 预先感谢。

1 个答案:

答案 0 :(得分:0)

如果有人正在寻找上述问题的答案,我可以通过以下更改来解决

  "messageId" : $util.dynamodb.toDynamoDBJson($ctx.args.messageId)

  "messageId" : $util.dynamodb.toDynamoDBJson($ctx.args.input.messageId)

我们需要将发送的数据作为输入,因此添加 $ ctx.args.input.messageId 后,它解决了我的问题。