AWS AppSync - создание мутации возвращает значение NULL - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть простой 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 ...

1 Ответ

0 голосов
/ 29 сентября 2018
## Request Mapping

{
  "version" : "2017-02-28",
  "operation" : "PutItem",
  "key" : {
    "id" : $util.dynamodb.toDynamoDBJson($ctx.args.input.id)
  },
  "attributeValues" : {
    "name" : $util.dynamodb.toDynamoDBJson($ctx.args.input.name)
  }
}
...