AppSync Dynamodb 解析器

AppSync Dynamodb Resolvers

我正在尝试学习如何使用 AppSync 及其 DynamoDB 集成。

我已成功创建 AppSync GraphQL API 并将解析器链接到主键上的 getter,我认为我了解发生了什么。但是,我根本无法让 putItem 解析器工作,并且正在努力寻找调试逻辑的有用方法。

这里有一个将部署应用程序的 cdk 存储库。第 133-145 行有一个手写模式,我认为它应该可以工作但是收到错误

One or more parameter values were invalid: Type mismatch for key food_name expected: S actual: NULL (Service: DynamoDb, Status Code: 400

我也曾尝试将表达式括在引号中,但收到错误。 我应该从这里去哪里?

示例数据创建一个 table 键

  1. food_name
  2. scientific_name
  3. sub_group

以food_name为主键。

https://github.com/AG-Labs/AppSyncTask

今天我尝试将列表解析器重新实现为

{
    "version" : "2017-02-28",
    "operation" : "Scan",
    ## Add 'limit' and 'nextToken' arguments to this field in your schema to implement pagination. **
    "limit": $util.defaultIfNull(${ctx.args.limit}, 20),
    "nextToken": $util.toJson($util.defaultIfNullOrBlank($ctx.args.nextToken, null))
}

响应映射为

$util.toJson($ctx.result.items)

在 cloud watch 中,我可以看到日志类型 ResponseMapping 下的结果列表(虽然没有正确过滤,但我现在会忽略它)但这些不会返回给查询器。结果简直

{
  "data": {
    "listGenericFoods": {
      "items": null
    }
  }
}

我不明白这是哪里出了问题。

问题是解析器是嵌套的。

编写手写模式解决了问题,但结果更差 API。后退几步,将从头开始慢慢添加更多解析器。

CloudWatch Logs 开启后有所帮助,但仍需要对解析器进行大量更改,然后重试。