我是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 }
}
}
}
在此方面的任何帮助都将不胜感激。 预先感谢。
答案 0 :(得分:0)
如果有人正在寻找上述问题的答案,我可以通过以下更改来解决
"messageId" : $util.dynamodb.toDynamoDBJson($ctx.args.messageId)
至
"messageId" : $util.dynamodb.toDynamoDBJson($ctx.args.input.messageId)
我们需要将发送的数据作为输入,因此添加 $ ctx.args.input.messageId 后,它解决了我的问题。