javascript从aws lambda查询dynamodb中的最后一项

时间:2018-11-27 06:20:49

标签: javascript amazon-web-services aws-lambda amazon-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
    })
}

我是这个领域的新手。新秀错误可能很多。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

在查询的关键条件下,您实际上并不需要Time。例如,如果要获取10个最新项,则查询参数应如下所示:

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

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

答案 1 :(得分:0)

补充一点,ScanIndexForward 是一个布尔值,不应该被引用。

所以

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

感谢您的回答?