我正在使用dynamoDB本地。我想创建一个包含6个属性的表,其中只有一个是key
。我怎么做?在keySchema
中指定键属性,在AttributeDefinitions
中指定所有属性?
var params = {
TableName : "Movies",
KeySchema: [
{ AttributeName: "year", KeyType: "HASH"}, //Partition key
],
AttributeDefinitions: [
{ AttributeName: "year", AttributeType: "N" },
{ AttributeName: "title", AttributeType: "S" }
],
ProvisionedThroughput: {
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
}
};
dynamodb.createTable(params, function(err, data) {
if (err) {
console.error("Unable to create table. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("Created table. Table description JSON:", JSON.stringify(data, null, 2));
}
});
答案 0 :(得分:3)
您是否收到以下错误?
一个或多个参数值无效:属性数量 KeySchema与中定义的属性数量不完全匹配 AttributeDefinitions
这是因为您的AttributeDefinitions
包含未在KeySchema
中定义的属性。如果您只想使用HASH
密钥,而不需要RANGE
密钥,则可以从title
中删除AttributeDefinitions
属性。
DynamoDB
是无模式的,因此您无需在AttributeDefinitions
中包含任何非关键属性定义。您可以在表格中放置项目时添加任何其他属性(必须包含分区/排序键)。
以下代码将创建一个仅包含HASH (Partition) key
的表格:
var dynamodb = new AWS_SDK.DynamoDB();
var params = {
TableName : "MyNewTable",
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
}
};
dynamodb.createTable(params, function(err, data) {
if (err) {
console.error("Unable to create table. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("Created table. Table description JSON:", JSON.stringify(data, null, 2));
}
有关详细信息,您可以参考createTable
服务上的DynamoDB
功能{/ 3}}。
希望这有帮助!
答案 1 :(得分:0)
简短答案:您不能。
创建表时不能添加非关键属性。您必须先创建表,然后使用dynamodb.putItem()
或dynamodb.batchWriteItem()
添加非键属性。
示例:
var params = {
TableName: 'Movies',
Item: {
'year': {N: '1994'},
'title': {S: 'Pulp Fiction'},
'description': {S: 'Two hitmen with a penchant for philosophical discussions.'},
}
}
dynamodb.putItem(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});