Amazon DynamoDB:检测到1个验证错误:'segment'处的值'0'未能满足约束:Member必须具有小于或等于-1的值

时间:2015-11-04 11:56:18

标签: node.js amazon-dynamodb

这是我的疑问:

var params = {
    TableName: 'UserGroup',

    // optional expression to filter results
    FilterExpression: '#groupId = :val',

    // optional - list of attributes to return (default is to return all)
    //ProjectionExpression: 'STRING_VALUE',

    // optional - if used by relevant expressions
    ExpressionAttributeNames: {
        '#groupId': 'groupId',
        // ... more expression attribute names ...
    },
    ExpressionAttributeValues: {
        ':val':{'S':'f8803eb0-8210-11e5-9d6b-bb8d7a911aab'},
        // ... more expression attribute values ...
    },

    Limit: 1, // optional (limit the number of items to evaluate)
    Select: 'ALL_ATTRIBUTES', // optional (ALL_ATTRIBUTES | COUNT)
    Segment: 0, // optional (for parallel scan)
    TotalSegments: 0, // optional (for parallel scan)
    ReturnConsumedCapacity: 'NONE', // optional (NONE | TOTAL | INDEXES)
};
dynamodb.scan(params, function(err, data) {
    if (err) print(err); // an error occurred
    else print(data); // successful response});
}

我正在尝试扫描Dynamo Db中的数据但是它会抛出Error.during获取数据,因为扫描查询会导致数据库中的所有数据,但我想过滤结果返回b查询。 任何正文都可以通过查询来获取dynamoDb中的过滤器扫描结果 的node.js

2 个答案:

答案 0 :(得分:0)

您的Segment值未正确验证。

来自documentation

  

段   对于并行扫描请求,Segment标识应用程序工作人员要扫描的单个段。

     

段ID从零开始,因此第一段始终为0.例如,如果要使用四个应用程序线程扫描表或索引,则第一个线程指定Segment值为0,第二个thread指定1,依此类推。

     

从并行扫描请求返回的LastEvaluatedKey的值必须在后续扫描操作中用作具有相同段ID的ExclusiveStartKey。

     

Segment的值必须大于或等于0,并且小于为TotalSegments提供的值。

     

如果您提供细分,则还必须提供TotalSegments。

尝试删除段规范或使TotalSegments等于1。

答案 1 :(得分:0)

SegmentTotalSegments都不正确。

来自Segment的文档,强调我的:

  

细分ID从零开始,因此第一段始终为0 。例如,如果要使用四个应用程序线程来扫描表或索引,则第一个线程指定Segment值为0,第二个线程指定1,依此类推。

     

从并行LastEvaluatedKey请求返回的Scan的值必须在后续ExclusiveStartKey操作中用作Scan且具有相同的段ID。

     

Segment的值必须大于或等于0,且小于为TotalSegments提供的值。

     

如果您提供Segment,则还必须提供TotalSegments

     

类型:数字

     

有效范围:最小值0.最大值999999。

     

必填:否

来自TotalSegments的文档,强调我的:

  

TotalSegments的值必须大于或等于1 ,且小于或等于1000000.如果指定TotalSegments值为1,则{ {1}}操作将是连续的而不是并行的。

     

如果您指定Scan,则还必须指定TotalSegments

     

类型:数字

     

有效范围:最小值1 。最大值1000000。

更新参数以符合API要求,或​​者删除它们以使其不再是并行扫描。