【问题标题】:AWS Dynamodb scan using ExclusiveStartKey option使用 ExclusiveStartKey 选项的 AWS Dynamodb 扫描
【发布时间】:2016-10-12 02:28:07
【问题描述】:

对于我最近的项目,我正在尝试从 dynamodb 获取数据。除了我在参数中添加“exclusiveStartKey”选项外,似乎一切正常。

下面是我的代码。

function scanDataFromDB(datetime) {
let params = {
    TableName: TABLE_NAME,
    IndexName: "main-index",
    Select: "ALL_ATTRIBUTES",
    ExclusiveStartKey: {
        "message_id": { "S": "20161011175258875925351560"}
    },
    ExpressionAttributeNames: {
        "#f_up": "date_updated"
    },
    ExpressionAttributeValues: {
        ":s_time": "2016-10-11 00:00:00",
        ":e_time": "2016-10-11 23:59:59"
    },
    FilterExpression: "#f_up between :s_time and :e_time",
    ScanIndexForward: "true"
};
console.log(params);
docClient.scan(params, function(err, data) {
    if(err) {
        console.log(JSON.stringify(err, null, 2));
        //callback(err, null);
    } else {
        console.log(JSON.stringify(data, null, 2));
        //callback(null, err);
    }
})

}

这会一直返回“提供的启动密钥无效。” 欢迎任何建议或帮助。

【问题讨论】:

    标签: node.js


    【解决方案1】:

    我发现了问题。我花了将近一周的时间。如果存在带有分区键的排序键,“ExclusiveStartKey”选项必须同时指明分区键和排序键。

    function scanDataFromDB(datetime) {
    let params = {
        TableName: TABLE_NAME,
        IndexName: "main-index",
        Select: "ALL_ATTRIBUTES",
        ExclusiveStartKey: {
            "message_id": "20161012114321726034249204",
            "date_updated": "2016-10-12 11:44:09"         
        },
        ExpressionAttributeNames: {
            "#f_up": "date_updated"
        },
        ExpressionAttributeValues: {
            ":s_time": "2016-10-11 00:00:00",
            ":e_time": "2016-10-11 23:59:59"
        },
        FilterExpression: "#f_up between :s_time and :e_time",
        ScanIndexForward: "true"
    };
    console.log(params);
    docClient.scan(params, function(err, data) {
        if(err) {
            console.log(JSON.stringify(err, null, 2));
            //callback(err, null);
        } else {
            console.log(JSON.stringify(data, null, 2));
            //callback(null, err);
        }
    })
    

    }

    【讨论】:

    • 谢谢,我也遇到了同样的问题,我添加了分区键和排序键,它工作正常。
    猜你喜欢
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多