#aws-lambda #graphql #aws-appsync
Вопрос:
Я пытаюсь создать мутацию, которая вызывает дочерний распознаватель в дополнение к родительскому распознавателю, если отправляется необязательный параметр.
Я использую AWS AppSync для отправки своих запросов в Lambda. AppSync создает и отправляет AppSyncEvent
в мой распознаватель файл, который выглядит примерно так:
{
"info": {
"parentTypeName": "Mutation",
"selectionSetList": [
...
],
"selectionSetGraphQL": "...",
"fieldName": "updateUser",
"variables": {}
}
}
Это событие передается в мою лямбда-функцию, где на основе fieldName
и parentTypeName
я вызываю свою updateUser
функцию.
У меня есть схема ниже
schema {
query: Query
mutation: Mutation
}
type Query {
getUser(id: ID!): User
}
type Mutation {
updateUser(name: String, email: String, bookRead: BookReadInput): User
}
type User {
name: String
email: String
booksRead: [Book]
}
type Book {
title: String
author: String
}
type BookReadInput {
title: String
author: String
}
Я хочу, чтобы, если мутация будет передана bookRead
, он знал, что нужно вызвать дочерний распознаватель, называемый addBook
дополнительно для обычного updateUser
распознавателя.
Я видел различные статьи о реализации дочерних распознавателей, но я не могу понять, как они могут работать с лямбда и как работают мои распознаватели.
Ответ №1:
Лямбда-код может проверить список выбора и решить, что делать с полями ввода BookReadInput. Видишь https://aws.amazon.com/blogs/mobile/appsync-and-the-graphql-info-object/
Вы также можете использовать распознаватели конвейеров, чтобы сначала обновить пользователя, а затем добавить книгу.
Я не думаю, что есть способ автоматизировать это. Вам нужно настроить его, так или иначе.
Комментарии:
1. SelectionSetList не будет работать для мутации, если только вы не потребуете, чтобы при обновлении книг вам всегда приходилось возвращать книги. Если его нужно настроить, я думаю, я могу просто проверить event.arguments, чтобы узнать, была ли отправлена книга.