2016-03-09 2 views
0

Я немного запутался о получении данных от dynamodb ... подключение не является проблемой, потому что я получаю The provided key element does not match the schemadynamodb в браузере начала работы

: the example provided from AWS

var table = new AWS.DynamoDB({params: {TableName: 'MY_TABLE'}}); 
var key = 'UNIQUE_KEY_ID'; 
var itemParams = {Item: {id: {S: key}, data: {S: 'data'}}}; 

    table.getItem({Key: {id: {S: key}}}, function(err, data) { 
    console.log(data.Item); // print the item data 
    }); 

enter image description here

в в моем случае уникальным ключом является «время», и то, что я хочу сделать, - это получить ключ (не уникальный)

ответ

0

getItem работает только на t он первичный ключ. Из документов: Операция GetItem возвращает набор атрибутов для элемента с заданным ключом. См. docs.

Чтобы решить эту проблему, создайте Глобальный вторичный индекс, который имеет «ключ» как HASH и «время» как ДИАПАЗОН. Затем сделайте операцию запроса, используя этот показатель, как IndexName:

var params = { 
    IndexName: 'your-new-GSI-index', 
    KeyConditionExpression: '#key = :key', 
    ExpressionAttributeNames: { '#key': 'key }, 
    ExpressionAttributeValues: { ':key': { S: yourKeyVar } } 
} 
table.query(params, callback); 

(не проверял этот код, но он должен работать)

+0

Я не думаю, что второй индекс является решением, моя логика говорит, что если это; s возможно для получения документа через aws exlplorer, это должно быть с aws sdk – Radoslav

+0

Ну по умолчанию исследователь просто выполняет сканирование, и вы можете позже фильтровать неиндексные ключи. Возможно, но это супер неэффективно и дорого, поскольку вы потребляете емкость чтения для каждой строки в своей таблице (а не только те, которые вы хотите получить, для этого вам нужен «запрос»). –