【问题标题】:GraphQL Relay unique id requirement and dynamo composite keysGraphQL Relay 唯一 id 要求和 dynamo 组合键
【发布时间】:2019-12-05 05:37:40
【问题描述】:

我正在构建一个连接到 DynamoDB 的 AWS AppSync graphQL 服务器,该服务器使用复合键(假设 postID 对于我的 HASH 和我的 RANGE 的 clientID 是完全唯一的)。

GraphQL 规范要求unique ID

为了让我从 DynamoDB 中获取项目,我需要同时传递它。我应该如何处理架构以遵循 graphQL 规范?

我会根据 postID+clientID 创建 graphQL ID 吗?有没有标准化的方式?

我可能会过度阅读规范,并且始终要求同时传递 clientID 以进行查询和突变是完全可以的,但我找不到明确的答案。我还没有使用过 Relay,所以我不确定它来回发送什么。

【问题讨论】:

    标签: amazon-dynamodb graphql aws-appsync


    【解决方案1】:

    是的,在 AppSync 中要求 clientId 很好。

    请参阅 AppSync 文档以了解如何设计架构:https://docs.aws.amazon.com/appsync/latest/devguide/designing-your-schema.html

    特别是我将在这里解释文档中的一部分。

    假设你有一个评论类型

     type Comment {
         todoid: ID!
         commentid: String!
         content: String
     }

    在这种情况下,有两个 id 并且两者都是必需的,因为这对应于 DynamoDB 主键 + 排序键组合。您将在解析器映射模板中将这些字段映射到 DynamoDB 中的键。

    模板可能如下所示:

    {
        "version" : "2017-02-28",
        "operation" : "PutItem",
        "key": {
            "todoid" : { "S" : "${context.arguments.todoid}" },
            "commentid" : { "S" : "${context.arguments.commentid}" }
        },
        "attributeValues" : {
            "content" : { "S" : "${context.arguments.content}" }
        }
    }

    简而言之,如果您使用的 DynamoDB 表具有两个哈希 + 排序键,则在 AppSync 中鼓励将它们作为 GraphQL 类型的必填字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-10
      • 2018-02-12
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 2016-07-21
      • 2012-08-20
      相关资源
      最近更新 更多