Appsync 中的字段解析器使用与参数相同的查询输出

Posted

技术标签:

【中文标题】Appsync 中的字段解析器使用与参数相同的查询输出【英文标题】:Field resolver in Appsync using the same query output as argument 【发布时间】:2020-11-19 18:28:08 【问题描述】:

GraphQL 架构:

type Query 
      getCustomer(customerId:Int!):Customer

type Customer 
      customerId : Int
      customerName : String
      emailId: String
      orderId: Int
      orderDetails(limit:Int):[OrderDetails]

type OrderDetails 
      orderId: Int
      productId: Int
      quantityOrdered: Int
      totalCost: Int

GraphQL 查询:

query getCustomer 
   getCustomer(customerId:100)
      customerName
      orderId
      orderDetails(limit:1)
          quantityOrdered
      
   

在这种情况下。 Customer 表只有 4 列:customerId、customerName、emailId、orderId 但如果在查询中询问,我需要点击 OrderDetails 表。所以我为 orderDetails 编写了一个字段解析器,这个 orderDetails 将从 customer 数据中获取输入

orderDetails Resolver的请求映射模板


    "version": "2017-02-28",
    "operation": "GetItem",
    "key": 
        "orderId": $util.dynamodb.toDynamoDBJson($ctx.args.orderId),
    

for better understanding of my issue check this image

如何将同一查询中的这个 orderId 用作字段解析器(OrderDetails 表)的输入

【问题讨论】:

【参考方案1】:

您可以在解析器中使用 $ctx.source.orderId 获取 orderDetails。

【讨论】:

以上是关于Appsync 中的字段解析器使用与参数相同的查询输出的主要内容,如果未能解决你的问题,请参考以下文章

AppSync GraphQL 模拟解析器映射未生成唯一项目

在 aws appsync 解析器中添加额外字段

多个字段解析器使用不同的查询参数解析相同的 REST API

在aws appsync解析器中添加额外字段

如何使用 Appsync 中的解析器获取 dynamodb 中存在的记录总数

如何使用 AppSync 解析器和 Aurora 将可选字段插入为空?