AWS Dynamodb使用ExclusiveStartKey选项进行扫描

对于我最近的项目,我试图从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); } }) 

}

这一直在返回“提供的起始键无效”。 任何build议或帮助是受欢迎的。

我发现了这个问题。 我花了差不多一个星期。 如果存在带分区键的sorting键,则“ExclusiveStartKey”选项必须同时指示分区键和sorting键。

 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); } }) 

}