我已经尝试扫描一个表并通过其二级密钥对其进行过滤,该二级密钥是名为Group的Number。如果我在Amazon Web Console上应用此sacn,结果很简单:
但是使用JavaScript我只得到一个空的结果。这是JS代码:
var id;
console.log("scan products")
// Get the id from the pathParams
id = request.pathParams.id;
console.log(id)
var params = {
TableName: request.env.tableName,
FilterExpression: '#product_group = :this_group',
ExpressionAttributeValues : {':this_group': {N:id}},
ExpressionAttributeNames: {'#product_group':'group'}
};
console.log("aqui")
console.log(params.ExpressionAttributeValues)
// post-process dynamo result before returning
return dynamo.scan(params).promise().then(function (response) {
return response;
});
在这里你可以看到我的结果输出:
2018-01-04T16:53:38.223Z ce022431-f16f-11e7-8a90-4f25e3228700 { headers:
{ 'content-type': 'application/json',
'content-length': '40',
connection: 'close',
date: 'Thu, 04 Jan 2018 16:53:38 GMT',
'x-amzn-requestid': 'ce6663b2-f16f-11e7-913f-c1a766cd30ad',
'access-control-allow-origin': '*',
'access-control-allow-headers': 'Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token',
'access-control-allow-methods': 'GET,OPTIONS',
'x-amzn-trace-id': 'sampled=0;root=1-5a4e5c10-f5dbe9d3ad72eb4f1f5bdc12',
'access-control-max-age': '0',
'access-control-allow-credentials': 'true',
'x-cache': 'Miss from cloudfront',
via: '1.1 aa9a6b87feabe1a30d21428a24c1a7d8.cloudfront.net (CloudFront)',
'x-amz-cf-id': 'AvS-yi8Y_-b6nwyYNosEGxpvpBkMptFigjldwZmO3ros6kO8JdBZhQ==' },
body: '{"Items":[],"Count":0,"ScannedCount":14}',
statusCode: 200,
statusMessage: 'OK' }
我不知道我做错了什么,因为它是一个非常简单的扫描。
答案 0 :(得分:0)
请扫描直到LastEvaluatedKey
为空,才能浏览Dynamodb表格中的所有项目。单次扫描仅通过 1 MB 数据。
请执行扫描,直到LastEvaluatedKey
为空。
单次扫描操作将读取最大数量的项目 set(如果使用Limit参数)或最多1 MB的数据和 然后使用FilterExpression对结果应用任何过滤。如果 LastEvaluatedKey出现在响应中,您需要进行分页 结果集。
请注意以下代码: -
应执行扫描,直到LastEvaluatedKey未定义或为空。
if (typeof data.LastEvaluatedKey != "undefined") {
console.log("Scanning for more...");
params.ExclusiveStartKey = data.LastEvaluatedKey;
docClient.scan(params, onScan);
}