AWS DynamoDb查询表

我想在一个新的项目上使用Dynamodb,我不得不说我非常困惑。

所以我已经设置了一个叫做ID的散列键的新表,我将它设置为一个时间戳,因为它需要是唯一的。

然后,我使用Lambda插入我的数据

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返回基于trackit列的结果?

我有下面的代码不起作用。

 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" } 

我如何查询所有trackit值我不能添加ID值,因为它只会返回一个值?

很困惑。

你有你的表设置的方式我认为你需要做一个扫描而不是查询[1]。 如果这是您经常进行的操作,并希望能够执行查询,则需要将trackit属性添加为辅助索引之一。

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