Node.js AWS DynamoDb查询表

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": {

我试图在一个新项目上使用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]

是的。这需要扫描。另一个选项是在trackit上定义一个全局二级索引。