如何使用 Lambda 创建 GraphQL 子解析器

How to create GraphQL Child Resolvers with Lambda

我正在尝试创建一个变更,如果传入可选参数,除了父解析器之外,它还会调用子解析器。

我正在使用 AWS AppSync 将我的查询发送到 Lambda。 AppSync 创建并发送一个 AppSyncEvent 到我的解析器文件,看起来像这样:

{
"info": {
        "parentTypeName": "Mutation",
        "selectionSetList": [
            ...
        ],
        "selectionSetGraphQL": "...",
        "fieldName": "updateUser",
        "variables": {}
    }
}

这个事件被传递到我的 lambda 函数,根据 fieldNameparentTypeName,我调用我的 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 解析器。

我看过各种关于实现子解析器的文章,但我无法弄清楚它们如何使用 lambda 以及我的解析器的工作方式。

lambda 可以检查 selectionSetList 并决定如何处理 BookReadInput 字段。 参见 https://aws.amazon.com/blogs/mobile/appsync-and-the-graphql-info-object/

您也可以使用管道解析器先更新用户,然后再添加图书。

我认为没有办法让它自动化。您需要以一种或另一种方式进行设置。