【发布时间】:2019-02-16 14:32:57
【问题描述】:
AWS AppSync 突变在尝试执行更新操作时引发错误。我已经正确创建了表格和我的
下面是 GraphQL Schema
type Mutation {
updateStateMutation(input: UpdateData!): ReturnValue
}
input UpdateData {
ID: String
OPP: Int
loc: [Float]
CDC: String
MND: String
CSP: Int
}
type ReturnValue {
ID: String
CDC: String
MND: String
loc: [Float]
CSP: Int
OPP: Int
}
Bellow 是突变的解析器
{
"version" : "2017-02-28",
"operation" : "PutItem",
"key" : {
"ID": $util.dynamodb.toDynamoDBJson($ctx.args.ID),
},
"attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
}
Bellow 是我在 GraphQL 上执行的执行部分
mutation UpdateStateData {
updateStateMutation(input: {
ID: "100000000-ofo"
CDC: "3E5E65117E877076L"
MND: "6EA8F0DAE8C3D09F"
CSP: 2
}){
ID
CDC
MND
CSP
loc
OPP
}
}
执行时出现如下错误。
{
"data": {
"updateStateMutation": null
},
"errors": [
{
………
"message": "One or more parameter values were invalid: Type mismatch for key ID expected: S actual: NULL (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: MRMBUAFKERB48R7JTH5TUV8I8NVV4KQNSO5AEMVJF66Q9ASUAAJG)"
}
]
}
上面的编码有什么问题。我已正确输入,但我仍然面临错误。 DynamoDB 中的键名是 ID,但它仍然抛出错误。
【问题讨论】:
-
我已经更新了最新答案
-
谢谢,上面的实际问题在我提到的解析器中 $util.dynamodb.toDynamoDBJson($ctx.args.ID) 它应该是 $util.dynamodb.toDynamoDBJson($ctx.args .input.ID)。
-
是的,如果您为您的 updateStateMutation 的 id 放置另一个参数,那么您不再需要输入中的 id。所以你可以使用 $ctx.args.id
-
而且我通常使用ID!而不是字符串呵呵
标签: graphql aws-appsync