Amazon DynamoDB - 使用JS扫描Itens

时间:2018-01-04 17:13:47

标签: javascript amazon-dynamodb

我已经尝试扫描一个表并通过其二级密钥对其进行过滤,该二级密钥是名为Group的Number。如果我在Amazon Web Console上应用此sacn,结果很简单: enter image description here

但是使用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' }

我不知道我做错了什么,因为它是一个非常简单的扫描。

1 个答案:

答案 0 :(得分:0)

请扫描直到LastEvaluatedKey为空,才能浏览Dynamodb表格中的所有项目。单次扫描仅通过 1 MB 数据。

请执行扫描,直到LastEvaluatedKey为空。

  

单次扫描操作将读取最大数量的项目   set(如果使用Limit参数)或最多1 MB的数据和   然后使用FilterExpression对结果应用任何过滤。如果   LastEvaluatedKey出现在响应中,您需要进行分页   结果集。

API Scan

Scan table - sample code

请注意以下代码: -

应执行扫描,直到LastEvaluatedKey未定义或为空。

if (typeof data.LastEvaluatedKey != "undefined") {
            console.log("Scanning for more...");
            params.ExclusiveStartKey = data.LastEvaluatedKey;
            docClient.scan(params, onScan);
        }