使用nodejs Dynamodb创建表?

时间:2016-12-13 14:40:32

标签: node.js amazon-dynamodb

我想创建一个表,并希望使用Dynamodb(NodeJs)创建6-7列/属性。我创建了一个表,但是我无法添加超过2个属性。我是这个平台的新手,任何人都可以帮我在一个表中创建多个属性。

3 个答案:

答案 0 :(得分:3)

在DynamoDB上,您必须仅为您的表定义Hash Key和可选的Sort Key。其余的属性不必定义!你可以推送你想要的任何数据。

根据the official docs查看以下示例。

我正在创建一个包含Hash的表MoviesYear并排序:Title。 然后我创建了一个具有更多属性的电影:

var AWS = require("aws-sdk");

AWS.config.update({
  region: "us-west-2",
  endpoint: "http://localhost:8000"
});

var client = new AWS.DynamoDB();
var documentClient = new AWS.DynamoDB.DocumentClient();

var tableName = "Movies";

var params = {
    TableName: tableName,
    KeySchema: [
        { AttributeName: "year", KeyType: "HASH"},  //Partition key
        { AttributeName: "title", KeyType: "RANGE" }  //Sort key
    ],
    AttributeDefinitions: [
        { AttributeName: "year", AttributeType: "N" },
        { AttributeName: "title", AttributeType: "S" }
    ],
    ProvisionedThroughput: {
        ReadCapacityUnits: 10,
        WriteCapacityUnits: 10
    }
};

client.createTable(params, function(tableErr, tableData) {
    if (tableErr) {
        console.error("Error JSON:", JSON.stringify(tableErr, null, 2));
    } else {
        console.log("Created table successfully!");
    }

    // Adding Batman movie to our collection
    var params = {
        TableName: tableName,
        Item: {
            "year": 2005,
            "title": "Batman Begins",
            "info": {
                "plot": "A young Bruce Wayne (Christian Bale) travels to the Far East.",
                "rating": 0
            }
        }
    };

    console.log("Adding a new item...");
    documentClient.put(params, function(err, data) {
        if (err) {
            console.error("Error JSON:", JSON.stringify(err, null, 2));
        } else {
            console.log("Added item successfully!");
        }
    });
});

答案 1 :(得分:2)

在dynamoDB中,当您将项目添加到数据库时,将自动创建属性。

创建表时,我们只指定主键和可选的排序键。

答案 2 :(得分:0)

这是一个使用nodejs AWS-SDK在DynamoDB上创建表的示例

// Imports
const AWS = require('aws-sdk')

AWS.config.update({ region: 'eu-west-3' });

// Declare local variables
const dynamo = new AWS.DynamoDB();

createTable('your table name')
.then(data => console.log(data))

function createTable (tableName) {
  const params = {
    TableName: tableName,
    AttributeDefinitions: [
      // required attributes to be used as keys
      {
        AttributeName: 'id',
        AttributeType: 'N'
      }
    ],
    KeySchema: [
      {
        AttributeName: 'id',
        KeyType: 'HASH'
      }
    ],
    ProvisionedThroughput: {
      ReadCapacityUnits: 5, // Eventually Consistent Model
      WriteCapacityUnits: 5
    }
  }

  return new Promise((resolve, reject) => {
    dynamo.createTable(params, (err, data) => {
      if(err) reject(err);
      else resolve(data);
    })
  })
}