Node.js AWS DynamoDb查询表
我试图在一个新项目上使用Dynamodb,我不得不说我很困惑 因此,我使用名为ID的散列键设置了一个新表,我将其设置为时间戳,因为它需要是唯一的 然后用Lambda插入我的数据,如下所示Node.js AWS DynamoDb查询表,node.js,amazon-web-services,lambda,amazon-dynamodb,Node.js,Amazon Web Services,Lambda,Amazon Dynamodb,我试图在一个新项目上使用Dynamodb,我不得不说我很困惑 因此,我使用名为ID的散列键设置了一个新表,我将其设置为时间戳,因为它需要是唯一的 然后用Lambda插入我的数据,如下所示 var tableName = "TrackerTable"; var datetime = new Date().getTime().toString(); var putData = { "TableName": tableName, "Item": {
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] 是的。这需要扫描。另一个选项是在trackit上定义一个全局二级索引。