无法在dynamodb-local-aws中创build表

我正在使用dynamoDB-local和nodejs代码。

我有以下代码:

var aws = require("aws-sdk") aws.config.update({"accessKeyId": "aaa", "secretAccessKey": "bbb", "region": "us-east-1"}) var awsdb = new aws.DynamoDB({ endpoint: new aws.Endpoint("http://localhost:8000") }); awsdb.createTable({ TableName: 'myTbl', AttributeDefinitions: [ { AttributeName: 'aaa', AttributeType: 'S' }, ], KeySchema:[ { AttributeName: 'aaa', KeyType: 'HASH' } ] }, function() { awsdb.listTables(function(err, data) { console.log(data) }); }); 

但是这不是创build表格。 我在日志中获得{ TableNames: [] } 。 err为null。

       

网上收集的解决方案 "无法在dynamodb-local-aws中创build表"

看起来您在CreateTable请求中缺less必需的ProvisionedThroughput参数。 所以发生了什么是CreateTable返回一个validation错误和ListTables执行成功,没有返回任何表(您的代码中的“err”variables似乎是为ListTables调用)

例如以下是为我工作

 var aws = require("aws-sdk") aws.config.update({"accessKeyId": "aaa", "secretAccessKey": "bbb", "region": "us-east-1"}) var awsdb = new aws.DynamoDB({ endpoint: new aws.Endpoint("http://localhost:8000") }); awsdb.createTable({ TableName: 'myTbl', AttributeDefinitions: [ { AttributeName: 'aaa', AttributeType: 'S' }, ], KeySchema:[ { AttributeName: 'aaa', KeyType: 'HASH' } ], ProvisionedThroughput: {ReadCapacityUnits: 1, WriteCapacityUnits: 1}, }, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else { awsdb.listTables(function(err, data) { console.log(data) }); } }); 

在发出一个createTable之后,你必须等到这个表被有效地创build。 一旦表被创build,它将出现在你的listTables调用。 您可以使用describeTable调用等待。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#createTable-property

CreateTable是一个asynchronous操作。 收到CreateTable请求后,DynamoDB立即返回带有CREATETING的TableStatus的响应。

您可以使用DescribeTable API来检查表状态。