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