GraphQL DynamoDB Schema 中的默认主键?

Posted

技术标签:

【中文标题】GraphQL DynamoDB Schema 中的默认主键?【英文标题】:Default Primary Key in GraphQL DynamoDB Schema? 【发布时间】:2020-08-29 02:05:49 【问题描述】:

我正在使用 AWS Amplify 中的 graphql 为新的 DynamoDB 创建我的第一个架构。我注意到许多没有@key 指令来定义主键的示例,例如下面的“Product”:

type Inventory @model
  @key(name: "byWarehouseID", fields: ["warehouseID"], queryField: "itemsByWarehouseID")
  @key(fields: ["productID", "warehouseID"]) 
  productID: ID!
  warehouseID: ID!
  inventoryAmount: Int!


type Product @model 
  id: ID!
  name: String!
  orders: [Order] @connection(keyName: "byProduct", fields: ["id"])
  inventories: [Inventory] @connection(fields: ["id"])

第一个字段是否自动用作主键(分区键)?

【问题讨论】:

你的问题让我意识到这种行为的记录有多么糟糕,我发现的最接近的是 Medium medium.com/@dantasfiles/… 上的这篇文章,它声明它默认为 id 字段,我猜它会创建一个如果它没有'不存在,就像 createdAt 和 updatedAt 一样 @danielfranca 这是一篇很有帮助的文章,谢谢!我认为因为这里有几种技术在起作用,所以文档存在差距。无论如何,您似乎已经回答了这个问题,因为在本地示例中检查 build\stacks\category.json 确实表明在第一个字段为“messageId”的模型上创建了一个新的“id”键,并且没有@key 符号。请创建一个答案,我会接受。再次感谢! 【参考方案1】:

您的问题让我意识到这种行为的记录有多么糟糕。 我找到的最接近的是这篇文章:https://medium.com/@dantasfiles/exploring-the-backend-specifications-generated-by-aws-amplify-api-57be2a349fa9

如果您未指定密钥 Amplify/AppSync 会为您执行此操作,则会创建一个 id 字段 与其他字段一样(即:createdAtupdatedAt

由于没有指定默认的@key 注释,AccountRepresentative 表具有默认的 id 分区/哈希键。

【讨论】:

我从那篇文章来到这里。请注意,无法指定默认的@key 注释 :)

以上是关于GraphQL DynamoDB Schema 中的默认主键?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个 API 调用中多次使用相同的 GraphQL 查询。放大,DynamoDB

AWS Amplify + Graphql + Dynamodb:突变时出现 ConditionalCheckFailedException 错误

放大 dynamodb graphql fetch 函数在循环中无限运行

Apollo GraphQL DataLoader DynamoDb

如何为 DynamoDB 创建 GraphQL 查询

使用 NodeJS 发送基于 DynamoDb 流的 graphQL 突变