gpt4 book ai didi

node.js:创建表时如何在 DynamoDB 中添加非键属性?

转载 作者:太空宇宙 更新时间:2023-11-03 23:01:58 25 4
gpt4 key购买 nike

我正在使用 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));
}
});

最佳答案

您是否收到以下错误?

One or more parameter values were invalid: Number of attributes in KeySchema does not exactly match number of attributes defined in AttributeDefinitions

这是因为您的 AttributeDefinitions 包含 KeySchema 中未定义的属性。如果您只想使用 HASH 键,而不需要 RANGE 键,则可以从 AttributeDefinitions 中删除 title 属性。

DynamoDB 是无架构的,因此您无需在 AttributeDefinitions 中包含任何非键属性定义。当您将项目放入表中时,您可以添加任何其他属性(必须包含分区/排序键)。

以下代码将创建一个仅包含HASH(分区)键的表:

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));
}

更多信息,您可以引用AWS SDK documentation用于 DynamoDB 服务上的 createTable 函数。

希望这有帮助!

关于node.js:创建表时如何在 DynamoDB 中添加非键属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45559296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com