是否有用于使用 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()?的主要内容,如果未能解决你的问题,请参考以下文章

AWS AppSync 解析器内部超时配置

如何在 vtl appsync 解析器中重用/导入代码?

如何在 AWS appSync 的 Apache Velocity 请求映射模板中操作字符串和数组

是否可以预填充 AWS AppSync iOS 客户端?

使用 VTL 的 AWS Gateway API 映射超时

Aurora PostgreSQL 可以与 AWS AppSync 一起使用吗?