Я пытаюсь написать resolver для связанных объектов.
Вот как выглядит моя схема.
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, кроме этого, но это говорит о простом строковом типе данных, а не о том, для коллекции типов объектов.
Может кто-нибудь помочь мне понять, как бороться с отношениями в resolvers? Спасибо
Как я уже сказал, у вас есть обновление.
Но основная проблема заключается в том, что ваш шаблон resolver для addUserPost содержит
userid
, но похоже, что вам нужно изменить его наid
. Похоже, что ваш тип пользователя или тип сообщения не имеют поля с именемuserid
Я имел в виду две отдельные таблицы данных и для хранения данных в двух таблицах мне нужно использовать элемент BatchUpdate и указать имена таблиц. Тем не менее, я не мог сделать это, как в моем случае, мне пришлось вставлять одну таблицу и обновлять ее в другой таблице. Наконец, я закончил копирование идентификатора в другой коллекции и построил на нем индекс.
Вот как выглядела моя последняя схема
Спасибо всем за качку!