是否有用于使用 VTL 的 AWS Appsync 的 Model.objects.update_or_create()?
Posted
技术标签:
【中文标题】是否有用于使用 VTL 的 AWS Appsync 的 Model.objects.update_or_create()?【英文标题】:Is there a Model.objects.update_or_create() for AWS Appsync using VTL? 【发布时间】:2018-11-28 19:27:04 【问题描述】:我正在使用$util.autoId()
并想知道是否有一种模式可以使用 VTL 执行update_or_create()
(类似于 Django 模式),或者我是否应该将解析器链接到 Lambda 并执行以下逻辑那里?
【问题讨论】:
您使用的是什么数据源类型? @RohanDeshpande DynamoDB 表 【参考方案1】:您可以使用Amazon DynamoDB UpdateItem operation 来执行update-else-create 操作。我们发布了一个端到端示例,其中包含一个说明此模式的 example AWS AppSync resolver。
【讨论】:
我已经阅读了 AWS 文档中有关解析器的教程,如果该特定 ID 不存在,自定义 UpdateItem 解析器中没有任何内容可以创建项目。这可能吗?我想要一个 API 调用来创建 (PutItem) 或更新 (UpdateItem) 新帖子,具体取决于 ID 是否已经存在。 这个问题解决了吗?使用 Appsync 的update
函数时,我在尝试更新不存在的资源时收到 DynamoDB:ConditionalCheckFailedException
...生成的解析器似乎不支持创建或更新逻辑。【参考方案2】:
在 AppSync 控制台中创建新资源时,会为“updateYOUR_MODEL”突变生成以下解析器
只删除最后一部分:
"condition":
"expression": "attribute_exists(#id)",
"expressionNames":
"#id": "id",
,
【讨论】:
以上是关于是否有用于使用 VTL 的 AWS Appsync 的 Model.objects.update_or_create()?的主要内容,如果未能解决你的问题,请参考以下文章