这是我的疑问:
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
答案 0 :(得分:0)
您的Segment
值未正确验证。
段 对于并行扫描请求,Segment标识应用程序工作人员要扫描的单个段。
段ID从零开始,因此第一段始终为0.例如,如果要使用四个应用程序线程扫描表或索引,则第一个线程指定Segment值为0,第二个thread指定1,依此类推。
从并行扫描请求返回的LastEvaluatedKey的值必须在后续扫描操作中用作具有相同段ID的ExclusiveStartKey。
Segment的值必须大于或等于0,并且小于为TotalSegments提供的值。
如果您提供细分,则还必须提供TotalSegments。
尝试删除段规范或使TotalSegments
等于1。
答案 1 :(得分:0)
Segment
和TotalSegments
都不正确。
来自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要求,或者删除它们以使其不再是并行扫描。