У меня есть простой API AppSync, который имеет тип для City и Venue, например, для сопоставления небольших розничных магазинов.Я пытаюсь создать новый город с помощью панели «Запросы» в AppSync, я также хочу предоставить сокращенный идентификатор - в отличие от длинного autoId, чтобы я мог выполнять запросы для сокращенного идентификатора, и приложение внешнего интерфейса можетиспользуйте его из параметров в URL.
Я пытаюсь создать новый элемент в DynamoDB со следующим кодом:
Схема
type City {
id: String!
name: String!
}
type Mutation {
...
createCity(input: CreateCityInput!): City
...
}
input CreateCityInput {
id: String!
name: String!
}
Mutation.createCity
// Request mapping template
{
"version" : "2017-02-28",
"operation" : "PutItem",
"key" : {
## If object "id" should come from GraphQL arguments, change to $util.dynamodb.toDynamoDBJson($ctx.args.id)
"id": $util.dynamodb.toDynamoDBJson($ctx.args.id)
},
"attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
}
// Response mapping template
$util.toJson($context.result)
Вот мутация, которую я запустил на странице запросов
mutation CreateCity {
createCity(input: {
id: "11538062"
name: "Manchester"
}) {
id
name
}
}
И это ошибка, которая возвращается из AppSync и / или Dynamo
{
"data": {
"createCity": null
},
"errors": [
{
"path": [
"createCity"
],
"data": null,
"errorType": "DynamoDB:AmazonDynamoDBException",
"errorInfo": null,
"locations": [
{
"line": 32,
"column": 3,
"sourceName": null
}
],
"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: 7PU4D2...)"
}
]
}
Любая помощь будет очень признательна, я не понимаю, почему я не могу выполнить простое создание, используя предоставленную строку в качестве идентификатора, и он идентифицирует ее как NULL ...