Правка для ясности: сообщений об ошибках нет, просто возвращается пустой список, если входная строка взята из context.arguments, предполагая, что она просто не выводит входную переменную в тестере запросов (настраивает еенекорректно вызывает эту известную ошибку при печати, конечно).Я также сделал это в конвейер с точно таким же результатом.Оглядываясь вокруг, люди предлагают сделать промежуточный объект, но, конечно, я просто неправильно вывожу свои входные переменные.
Я работаю над проектом в AWS Appsync с использованием DynamoDB и столкнулся с проблемойс вводом context.arguments.
В основном код работает, если я жестко закодирую строку с идентификатором книги в запросе (полный контекст, чтобы следовать), но если я использую context.arguments, он просто отказываетсяработать правильно, возвращая пустой массив для «позвоночника».
В моей схеме есть следующие типы:
type Book {
id: ID!
title: String
spines: [Spine]
}
type Spine {
id: ID!
name: String
bookId: ID!
}
Я использую следующий запрос:
type Query {
getBook(id: ID!): Book
query getBook($bookId: ID!){
getBook(id: $bookId){
title
id
spines {
name
bookId
}
}
}
Со следующим вводом (предположим, что это соответствующий гид):
{
"bookId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
}
И этот преобразователь для объекта spines:
{
"version" : "2017-02-28",
"operation" : "Query",
"index" : "bookId-index",
"query" : {
"expression": "#bookId = :bookId",
"expressionNames" : {
"#bookId" : "bookId"
},
"expressionValues" : {
":bookId" : { "S" : "${context.arguments.id}" }
}
}
}
}
Я убедился, что мой набор данных также содержит ложные срабатывания (спины для других книг), поэтомучто я знаю, когда мой запрос возвращает правильные данные.
Это работает, еслиЯ жестко кодирую guid как строку вместо использования context.arguments и получаю именно то, что ищу для каждой guid книги.
Например, замена значений выражений на это прекрасно работает:
"expressionValues" : {
":bookId" : { "S" : "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" }
}
Почему "$ {context.arguments.id}" не получает здесь входную переменную так же, как в других запросах?