Я пытаюсь использовать Dynamodb для нового проекта, и я должен сказать, что я очень смущен.AWS DynamoDb, запрашивающий таблицу
Итак, у меня установлена новая таблица с хеш-ключом с именем ID, который я устанавливаю как временную метку, так как она должна быть уникальной.
Я затем вставляя мои данные как данные следуют с лямбда
var tableName = "TrackerTable";
var datetime = new Date().getTime().toString();
var putData = {
"TableName": tableName,
"Item": {
"ID" : {
"N": datetime
},
"TrackIt": {
"S": event.trackit
},
"Latitude": {
"N": event.lat
},
"Longitude": {
"N": event.lon
},
"Time": {
"N": datetime
}
}
}
dynamoDB.putItem(putData, function(err, data) {
if (err) {
context.fail('ERROR: Dynamo failed: ' + err);
} else {
console.log('Dynamo Success: ' + JSON.stringify(data, null, ' '));
context.succeed('SUCCESS');
}
});
Так что мой стол начинает выглядеть так это хорошо. Итак, я пытаюсь использовать Lambda для возврата моих результатов на основе столбца трекинга?
У меня есть следующий код, который не работает.
var tableName = "TrackerTable";
var datetime = new Date().getTime().toString();
var queryData = {
"TableName": tableName,
"ConsistentRead": true,
"KeyConditionExpression": "trackit = :val",
"ExpressionAttributeValues": {":val": {"S": "05LUGFr7494"}}
};
dynamoDB.query(queryData, function(err, data) {
if (err) {
context.fail('ERROR: Dynamo failed: ' + err);
}else{
console.log('Dynamo Success: ' + JSON.stringify(data, null, ' '));
context.done(null, data.Items);
}
});
Я получаю эту ошибку.
{
"errorMessage": "ERROR: Dynamo failed: ValidationException: Query condition missed key schema element: ID"
}
Как я могу запросить все значения отслеживания, которые я не могу добавить значение идентификатора, поскольку оно вернет только одно значение?
Очень смущенный.
Да. Для этого требуется сканирование. Другой вариант - определить глобальный вторичный индекс на трекете. – Shibashis