如何通过aws-cli创建带有嵌套属性定义的dynamodb模式?

时间:2019-01-11 18:07:15

标签: node.js amazon-dynamodb aws-sdk aws-cli

我一直在使用命令aws dynamodb create-table --cli-input-json创建本地dynamodb表,以便在本地机器上进行测试。

我可以创建简单的表,但不能创建更复杂的现实表。我浏览了AWS文档,但缺少对嵌套AttributeDefinitions的解释,或者找不到。 这是一个有效的简单示例(用于通过AWS CLI创建):

{
  "TableName": "fruitsTable",
  "KeySchema": [
    {
      "AttributeName": "fruitId",
      "KeyType": "HASH"
    }
  ],
  "AttributeDefinitions": [
    {
      "AttributeName": "fruitId",
      "AttributeType": "S"
    }
  ],
  "ProvisionedThroughput": {
    "ReadCapacityUnits": 5,
    "WriteCapacityUnits": 5
  }
}

那很好。 aws dynamodb create-table --cli-input-json file:///Users/you/subfile/server/config/tables/fruits.json --endpoint-url http://localhost:8000

但是,我想看看创建一个更复杂的对象的示例。哪种模式对此有效?

{
  "ComplexFruit" : [
    {
      "complexFruitId": "redbanana-fromGroceryStore"
      "name" : "redBanana", 
      "notes": "this one is red",
      "count" : {
        "ripe" : 5,
        "total": 10
       },
      "stores" : [ 
          {"storeName" : "Exito"}
       ]
     }
   ]
}

我对如何创建嵌套的AttributeDefinition感到困惑,而无需花费大量猜测或挖掘代码(如果dynamodb是开源的?)。  有人知道吗?同样,这显然是一个人为的示例,但是它将演示如何创建嵌套模式。

2 个答案:

答案 0 :(得分:0)

您只需为将成为表主键或索引键的一部分的属性指定AttributeDefinitions。 Dynamo主要是无模式的(除了键定义之外)。它不关心您要存储的任何其他属性-无需建模。

答案 1 :(得分:0)

在精神学习中,我将分享一些我所学到的知识,在学习DynamoDb的过程中,我与几个ORM一起玩。

Dynamoose文档太糟糕了,我经历了很多试验和错误。 AWS文档不好但是可以实现。这就是我从一开始就在寻找的https://github.com/awslabs/dynamodb-data-mapper-js

希望这是其他开发人员希望在Node.js上将DynamoDb与ORM结合使用的快捷方式