首页 > 解决方案 > javascript 从 aws lambda 查询 dynamodb 中的最后一项

问题描述

所以我有一个 dynamodb 表,其中有一个主键ID和一个辅助键Time,它是一个数字/时间戳。现在我想查询特定ID的最新记录。我试图构造这样的参数,但不知道如何继续查询最大的项目Time

function get_snapshot(id, callback){
    let params = {
        TableName: "Table1",
        KeyConditionExpression: "ID = :id and Time ", // here I stuck
        ExpressionAttributeValues: {
        ":id": id
        }
    }; 
    docClient.query(params, function(err, data){
        ... // process the fetched item here
    })
}

我对这个领域很陌生。可能会有很多新手错误。任何帮助表示赞赏。

标签: javascriptamazon-web-servicesaws-lambdaamazon-dynamodb

解决方案


您实际上并不需要Time查询的属性。例如,如果您想获取 10 个最新项目,您的查询参数应如下所示:

let params = {
    TableName: "Table1",
    KeyConditionExpression: "ID = :id",
    ExpressionAttributeValues: {
        ":id": id
    },
    ScanIndexForward: false,
    Limit: 10
}; 

ScanIndexForward: false告诉 DynamoDB 它应该返回从最高排序键值开始的结果。Limit: 1告诉 DynamoDB 您只想获得前 10 个结果。


推荐阅读