У меня следующие настройки резолвера:
#set($questions = [])
#foreach($item in ${ctx.args.questions})
#set($item.id = $util.dynamodb.toDynamoDBJson($util.autoId()))
$util.qr($questions.add($util.dynamodb.toMapValues($item)))
#end
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"QuestionTable": $utils.toJson($questions)
}
}
И следующая схема GraphQL:
input CreateQuestionInput {
text: String
sectionId: ID!
}
input CreateScoreInput {
score: Int!
questionId: ID!
userId: ID!
}
input CreateSectionInput {
title: String
subSection: String
}
input DeleteQuestionInput {
id: ID!
}
input DeleteScoreInput {
id: ID!
}
input DeleteSectionInput {
id: ID!
}
type Mutation {
...
createQuestion(input: CreateQuestionInput!): Question
batchCreateQuestion(questions: [CreateQuestionInput]!): [Question]
}
type Query {
getSection(id: ID!): Section
listSections(filter: TableSectionFilterInput, limit: Int, nextToken: String): SectionConnection
getScore(id: ID!): Score
listScores(filter: TableScoreFilterInput, limit: Int, nextToken: String): ScoreConnection
getQuestion(id: ID!): Question
listQuestions(filter: TableQuestionFilterInput, limit: Int, nextToken: String): QuestionConnection
}
type Question {
id: ID!
text: String
sectionId: ID!
}
type QuestionConnection {
items: [Question]
nextToken: String
}
type Schema {
query: Query
}
type Score {
id: ID!
score: Int!
questionId: ID!
userId: ID!
}
type ScoreConnection {
items: [Score]
nextToken: String
}
type Section {
id: ID!
title: String
subSection: String
questions: [Question]
}
type SectionConnection {
items: [Section]
nextToken: String
}
input TableQuestionFilterInput {
id: TableIDFilterInput
text: TableStringFilterInput
sectionId: TableIDFilterInput
}
input UpdateQuestionInput {
id: ID!
text: String
sectionId: ID
}
(Я отредактировал часть схемы, так как она была довольно большой).
Когда я пытаюсь выполнить запрос:
mutation BatchCreateQuestions($sec: ID!) {
batchCreateQuestion(questions: [
{
text: "Tester 1"
sectionId: $sec
},
{
text: "Tester 2",
sectionId: $sec
}
]) {
id
text
sectionId
}
}
С переменными:
{ "sec": "abc123" }
Получаю ответ:
{
"data": {
"batchCreateQuestion": [
null,
null
]
}
}
И когда я проверяю таблицу DynamoDB, она не сохраняет значения. Я предоставил полные разрешения Dynamodb для этого источника данных, но все равно без радости.





Как ваш шаблон ответа выглядит в преобразователе? Это должно быть $util.toJson($ctx.result.data.QuestionTable) на основе имени приведенной выше таблицы QuestionTable, поскольку оно автоматически переводится в контекст ответа.
это $util.toJson($ctx.result.data.QuestionTable)
Оказывается, я дал разрешения на пакетную запись роли с таким же названием вместо роли, влияющей на этот источник данных. Если вы видите аналогичную проблему, проверьте свои роли / разрешения IAM. Дурак я.
Пожалуйста дайте мне ответ
@VikramsinhGaikwad Мне нужно было убедиться, что я предоставил AppSync разрешения на запись пакета IAM для этой таблицы DynamoDB docs.aws.amazon.com/amazondynamodb/latest/developerguide/… См. «Dynamodb: BatchWriteItem»
Каков окончательный ответ? Я застрял