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 类型的必填字段。
我正在构建一个连接到 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 类型的必填字段。