0
我想通过使用nodejs aws sdk过滤dynamodb扫描操作返回的数据,但返回的数据有0个项目。DynamoDB扫描FilterExpression返回空结果
Response : {"Items":[],"Count":0,"ScannedCount":15}
我试图与这两个FilterExpression和ScanFilter,但得到了同样的结果。
FilterExpression:
var params = {
TableName: tableName,
FilterExpression: 'active = :active',
ExpressionAttributeValues: {
':active': {
S: '1'
}
}
};
ScanFilter:
var params = {
TableName: tableName,
ScanFilter: {
'active': {
"AttributeValueList": [{ "S": "1" }],
"ComparisonOperator": "EQ"
}
}
};
这里是的NodeJS代码:
dynamodb.scan(params, onScan);
function onScan(err, data) {
if (err) {
console.error('Unable to scan the table. Error JSON:', JSON.stringify(err, null, 2));
} else {
if (typeof data.LastEvaluatedKey != 'undefined') {
params.ExclusiveStartKey = data.LastEvaluatedKey;
dynamodb.scan(params, onScan);
}
if (data && data.Items)
callback(data.Items);
else
callback(null);
}
}
我在dynamodb控制台检查相同的过滤条件并获得预期的结果。
你的代码进入了'LastEvaluatedKey!='undefined''状态吗?换句话说,你是否在处理'dynamodb.scan()'的多个调用? 'callback()'函数的代码是什么?这不是在Lambda函数中运行的吗? –
@MarkB否,代码没有处理对dynamodb.scan()的多个调用,并且回调是在EC2实例上运行的节点快速应用程序。 – acnn
你可以在FilterExpressions中尝试'ExpressionAttributeValues:{':active':'1'}' – bharathp