2016-06-19 7 views
1

Я пытаюсь использовать 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'); 
     } 
    }); 

Так что мой стол начинает выглядеть так это хорошо. enter image description here Итак, я пытаюсь использовать 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" 
} 

Как я могу запросить все значения отслеживания, которые я не могу добавить значение идентификатора, поскольку оно вернет только одно значение?

Очень смущенный.

ответ

1

Способ установки таблицы. Мне кажется, что вам нужно выполнить проверку здесь вместо запроса [1]. Если это операция, которую вы будете делать часто и хотите иметь возможность делать запрос, вам нужно добавить свойство trackit в качестве одного из ваших вторичных индексов.

[1] http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html

+0

Да. Для этого требуется сканирование. Другой вариант - определить глобальный вторичный индекс на трекете. – Shibashis