【问题标题】:AWS Appsync - add multiple itemsAWS Appsync - 添加多个项目
【发布时间】:2018-06-29 07:18:41
【问题描述】:

有什么方法可以将 appsync 连接到 dynamodb 并选择一次放置多个项目?我问的是 dynamodb reuqest 映射。

假设我们有 saveVotes 突变

type Mutation {
    saveVotes(votes: [VoteInput]): [Vote]!
}

我应该如何设计 dynamo 请求模板以将每个投票保存为 dynamodb 中的单独对象?每个 VoteInput 都有 ID。我正在发送 5 个 VoteInput,并且我想要 5 个单独的对象,在 dynamodb 中有单独的 ID。 在 AWS 文档中,有仅针对单个 putItem 的示例,这对我来说还不够 https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-putitem

【问题讨论】:

  • 当您执行单个PutItem 时,您的PutItem 操作是否需要conditionExpression?如果没有,那么您可以使用 AWS AppSync BatchPutItem 操作。这里有一个关于如何使用它的教程docs.aws.amazon.com/appsync/latest/devguide/…
  • 当前日期最好的方法是什么?

标签: amazon-web-services graphql aws-appsync


【解决方案1】:

您应该在https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html 上查看使用批处理解析器

据我了解,您可以构建 GraphQL 查询以接受项目集合,然后实现相关的解析器以按照您描述的方式执行批处理操作。

【讨论】:

    【解决方案2】:

    所以对我来说最好的解决方案是这样查询

    mutation saveVotes {
      vote1: saveVotes(author: "AUTHORNAME", value: 1 ) { author, value }
      vote2: saveVotes(author: "AUTHORNAME", value: 3 ) { author, value }
    }
    

    【讨论】:

    • 是的,尽管您也可以使用 lambda 函数作为代理来自己运行 BatchWriteItem,但这会起作用。能够直接从解析器调用 BatchWriteItem 操作会非常好。
    • BatchWriteItem 有一些限制 - BatchWriteItem 操作在一个或多个表中放置或删除多个项目。对 BatchWriteItem 的一次调用可以写入多达 16 MB 的数据,其中可以包含多达 25 个放置或删除请求。要写入的单个项目可以大到 400 KB。 - 这对我来说还不够,但是是的,直接从 lambda 调用它的选项无论如何都会很棒。
    猜你喜欢
    • 2019-12-02
    • 2018-12-02
    • 2018-10-31
    • 2019-08-02
    • 2019-10-19
    • 2012-04-27
    • 2019-10-10
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多