Например, когда мы запрашиваем запрос GraphQL,
query GetPost {
singlePost(id: 123) {
id
title
}
}
и мы настроили преобразователь Lambda в AWS AppSync, шаблон сопоставления запросов,
{
"version": "2017-02-28",
"operation": "Invoke",
"payload": {
"resolve": "singlePost",
"query": $utils.toJson($context.arguments)
}
}
позволяет нам определить объект события, передаваемый обработчику лямбда.
В приведенном выше примере наш обработчик Lambda будет вызываться с событием event, где event.payload.query.id == 123 или тому подобное.
Согласно документы объект $context включает в себя:
{
"arguments" : { ... },
"source" : { ... },
"result" : { ... },
"identity" : { ... },
"request" : { ... }
}
Тем не менее, в документации не упоминается, где я могу получить доступ к запрошенным полям запроса GraphQL..
В первом примере эти поля будут соответствовать ["id", "title"].
В случае, если мне нужно разрешить некоторые вложенные свойства, например. массив тегов объекта через дорогостоящую операцию, например. соединение SQL, было бы полезно, если бы я мог проверить, действительно ли запрошено это вложенное свойство.
Этот вопрос относится к Как получить запрошенные поля внутри преобразователя GraphQL?, однако он отличается от реализации GraphQL graphql-tools vs AppSync.


На самом деле это не то, что AppSync сегодня поддерживает, к сожалению. Однако это запрос, который мы услышали от других клиентов, и я буду использовать этот пост как +1, чтобы определить его приоритет для будущего выпуска.
Документ был обновлен, AWS добавила новое поле info в контекст, вы можете получить доступ к имени поля, как показано ниже:
{
"version" : "2017-02-28",
"operation" : "Invoke",
"payload": {
"resolve": "$ctx.info.fieldName",
"query": $utils.toJson($context.arguments)
}
}
Вы можете обратиться к документу здесь:
info.fieldName — это поле в parent, которое запрашивается для разрешения этого преобразователя, а не массив имен полей, запрашиваемых в конечном объекте, который запрашивает исходный вопрос.
Теперь есть поле $context.info.selectionSetList, которое включает запрошенные имена полей. официальные документы предоставляет пример и объясняет некоторые специальные варианты использования интерфейсов и псевдонимов.
Обратите внимание, что при использовании $utils.toJson() в context.info значения, возвращаемые selectionSetList, по умолчанию не сериализуются. См. также github.com/aws-amplify/amplify-cli/issues/4869
Есть ли обновление по этой функции? Это то, что ЗНАЧИТЕЛЬНО уменьшит раздувание шаблонов сопоставления в нашем приложении.. я не видел никаких текущих разговоров об этой функции.