如何在本地使用 GlobalSecondaryIndexes 在 DynamoDB 上创建 table?

How create a table on DynamoDB with a GlobalSecondaryIndexes in local?

我在 Windows 7 上本地安装 DynamoDB。 我的项目是 Node.js(0.12.0),我使用 aws-sdk。

DynamoDB 版本:2012-08-10

这项工作 ->

dynamodb.createTable({
TableName: 'Users',
AttributeDefinitions: [{AttributeName: 'userId', AttributeType: 'S'}],
KeySchema: [{AttributeName: 'userId', KeyType: 'HASH'}],
ProvisionedThroughput: {
    'ReadCapacityUnits': 5,
    'WriteCapacityUnits': 5
}
}, function () {
    ...
});

这不起作用 ->

dynamodb.createTable({
TableName: 'Users',
AttributeDefinitions: [{AttributeName: 'userId', AttributeType: 'S'}],
KeySchema: [{AttributeName: 'userId', KeyType: 'HASH'}],
ProvisionedThroughput: {
    'ReadCapacityUnits': 5,
    'WriteCapacityUnits': 5
},
GlobalSecondaryIndexes: [
    {
        IndexName: 'longitudeUserIndex',
        KeySchema: [
            {
                AttributeName: 'userId',
                KeyType: 'HASH'
            },
            {
                AttributeName: 'longitude',
                KeyType: 'RANGE'
            }
        ],
        Projection: {
            NonKeyAttributes: [
            ],
            ProjectionType: 'KEYS_ONLY'
        },
        ProvisionedThroughput: {
            'ReadCapacityUnits': 5,
            'WriteCapacityUnits': 5
        }
    }
]
}, function () {
    ...
});

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

我解决了我的问题。

我在 AttributeDefinitions 中添加了经度。

AttributeDefinitions: [{AttributeName: 'userId', AttributeType: 'S'}, {AttributeName: 'longitude', AttributeType: 'N'}]