Я пытаюсь написать преобразователь для связанных объектов.
Вот как выглядит моя схема.
type User{
id:ID!
name: String!
posts:[Post] #Resolver 1
}
type Post{
id:ID!,
title: String!
body: String!
}
type CreatePostInput{
id:ID!,
title: String!
body: String!
}
type mutation{
addUserPost(userid:ID!, input:CreatePostInput!): Post
}
Теперь я добавил преобразователь для сообщений (см. #Resolver 1) как
{
"version" : "2017-02-28",
"operation" : "Scan",
"key": {
"userid" : { "S" : "${context.source.id}" }
},
}
Теперь я добавил распознаватель для мутации addUserPost как
{
"version" : "2017-02-28",
"operation" : "PutItem",
"key": {
"userid" : { "S" : "${context.arguments.userid}" },
"input" : $util.dynamodb.toDynamoDBJson(${context.arguments.input})
}
}
Теперь, когда я запускаю запрос
mutation addnewposttest{
addChapterToCourse(addUserPost:"c85a0508-ee0e-4ad8-8629-34880e1c6d74",
input:{
title:"Demo",
body:"Test Body",
id: "c85a0508-c85a0-508c-85a-0508"
}){
id
}
}
, я получаю DynamoDB: AmazonDynamoDBException как единое целоеили несколько значений параметров недопустимы: отсутствует идентификатор ключа в элементе (Сервис: AmazonDynamoDBv2; код состояния: 400; код ошибки: ValidationException; идентификатор запроса: XXXXXXXXXXXX
Я попытался изменить источник данных для второго распознавателя,но безуспешно. Я не нашел никакой хорошей документации AWS за исключением this , но это говорит о простом строковом типе данных, а не о сборе типов объектов.
Может кто-нибудь помочь мне понятькак бороться с отношениями в резольверах? Спасибо