amazon-web-services - 解析器中的 AppSync GraphQL 变异服务器逻辑
问题描述
我在寻找好的来源/弄清楚如何正确地将服务器端验证添加到我的 AppSync GraphQL 突变时遇到问题。
本质上,我使用 AWS 仪表板来定义我的 AppSync 架构,因此为我创建了 DynamoDB 表,以及为数据设置的一些基本解析器。
不,我需要实现以下目标:
inventory
我有一个球员gold
- 玩家调用
purchaseItem
突变item_id
- 一旦调用此突变,我需要在解析器中执行一些检查,即检查
item_id
关联 DynamoDB 的 int 'Items' 表是否存在,检查玩家是否有足够的金币,再次在关联 DynamoDB 的“Players”表中,如果是,则写入Players
DynamoDB 表通过将项目添加到他们的库存和新减去的黄金数量。
我相信实现这一目标并降低成本和延迟的最有效方法是为 AppSync 使用“Apache Velocity”模板语言?
很高兴看到这个例子展示了如何查询/写入 DynamoDB、处理错误和正确解决突变。
解决方案
您想查看的是 Pipeline Resolvers: https ://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html
是的,这需要 VTL(速度模板)
这允许您使用 VTL 执行读取、写入、验证和任何您想要的操作。您基本上所做的是将输入和输出链接到下一个模板并进行所需的过程。
这是一篇中等帖子,向您展示了如何做到这一点:
https://medium.com/@dabit3/intro-to-aws-appsync-pipeline-functions-3df87ceddac1
换句话说,您可以做的是:拥有一个查询数据库的模板,将结果通过管道传输到另一个模板,该模板验证结果并在成功或失败时将其插入。
推荐阅读
- javascript - ReactJs如何在子组件中获取特定的道具数据
- ffmpeg - 如何在单独的音轨上输入多个音频设备
- python - 什么是更快/更高效,读/写文件或像对象一样的 io 文件?
- c++ - 如何使用 VirtualDesktopManager 界面?
- firebase - 我们可以使用firestore按开始日期对事件进行排序并在结束字段上设置条件吗
- java - 通过 REST 端点处理来自 Spark 应用程序的传入请求
- c++ - 将 shared_ptr
和 shared_ptr的实例 具有相同的原始指针共享引用计数? - javascript - 更改文本区域的值
- vue.js - 从外部 js/ts 文件调用 nuxt/axios 模块
- c# - 如何在 KnapSack 问题中显示所有包含的数字?