Решатели AWS Appsync для обновленных связанных таблиц - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь написать преобразователь для связанных объектов.

Вот как выглядит моя схема.

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 , но это говорит о простом строковом типе данных, а не о сборе типов объектов.

Может кто-нибудь помочь мне понятькак бороться с отношениями в резольверах? Спасибо

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я имел в виду две отдельные таблицы данных, и для сохранения данных в двух таблицах мне нужно использовать элемент BatchUpdate и указать имена таблиц.Тем не менее, я не мог сделать это, как в моем случае использования, мне пришлось вставить в одну таблицу и обновить в другой таблице.

Наконец, я закончил копированием идентификатора в другой коллекции и построил для него индекс.

Так выглядела моя окончательная схема

type User{
id:ID!
name: String!
posts:[Post] #Resolver 1 -
}

type Post{
id:ID!,
userId:ID!# I will look for source.id on this field
title: String!
body: String!
}

Спасибо всем за передачув!

0 голосов
/ 07 июня 2018

Как я уже говорил, у вас есть какое-то обновление.

Но главная проблема в том, что ваш шаблон преобразователя для addUserPost содержит userid, но, похоже, вам нужно изменить его на id.Похоже, ваш тип пользователя или тип сообщения не имеют поля с именем userid

...