GraphQL Relay 唯一 ID 要求和 dynamo 组合键

GraphQL Relay unique id requirement and dynamo composite keys

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

GraphQL 规范要求 unique ID

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

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

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

是的,在 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 table 具有两个哈希 + 排序键,则鼓励在 AppSync 中将它们作为 GraphQL 类型的必填字段。