我想创建一个表,并希望使用Dynamodb(NodeJs)创建6-7列/属性。我创建了一个表,但是我无法添加超过2个属性。我是这个平台的新手,任何人都可以帮我在一个表中创建多个属性。
答案 0 :(得分:3)
在DynamoDB上,您必须仅为您的表定义Hash Key
和可选的Sort Key
。其余的属性不必定义!你可以推送你想要的任何数据。
根据the official docs查看以下示例。
我正在创建一个包含Hash的表Movies
:Year
并排序: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);
})
})
}