amazon-web-services - AppSync Dynamodb 解析器
问题描述
我正在尝试学习如何使用 AppSync 及其 DynamoDB 集成。
我已成功创建 AppSync GraphQL API 并将解析器链接到主键上的 getter,并认为我了解正在发生的事情。但是,我根本无法让 putItem 解析器工作,并且正在努力寻找一种有用的方法来调试逻辑。
这里有一个 cdk 存储库,它将部署应用程序。第 133-145 行有一个手写模式,我认为它应该可以工作,但是会收到错误
一个或多个参数值无效:预期键 food_name 的类型不匹配:S 实际:NULL(服务:DynamoDb,状态代码:400
我也尝试将表达式用引号括起来,但收到错误。我应该从这里去哪里?
示例数据创建一个带有键的表
- 食物名称
- 科学名称
- 团体
- 子组
以 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 启用后会有所帮助,但仍然需要对解析器进行大量更改并重试。
推荐阅读
- dom - puppeter select checkbox in table based on inner text
- mongoose - 当 Mongoose 中的预保存挂钩失败时,如何静默跳过保存文档?
- python - 如何通过实际改组所有元素来改组列表列表?
- r - 缩进 R Markdown 块(PDF 输出)
- sql - 如何在 SQL 中使用数据透视表添加列
- javascript - element.innerHTML 在 Javascipt 中没有给出预期的结果
- php - 在 wamp 中安装 wordpress 时面临的问题
- flutter - Flutter-web 持久登录
- php - 仅在 WordPress 中显示顶级类别
- pine-script - PineScript:常量字符串数组或如何使用数组成员调用 security()