Ich versuche, die Daten zu filtern, die von einer Dynamodb-Scanoperation mit nodejs aws sdk zurückgegeben werden, aber die zurückgegebenen Daten haben 0 Elemente.DynamoDB Scan FilterExpression gibt ein leeres Ergebnis zurück
Response : {"Items":[],"Count":0,"ScannedCount":15}
Ich habe versucht, mit beiden Filterexpression und ScanFilter aber das gleiche Ergebnis zu erzielen.
Filterexpression:
var params = {
TableName: tableName,
FilterExpression: 'active = :active',
ExpressionAttributeValues: {
':active': {
S: '1'
}
}
};
ScanFilter:
var params = {
TableName: tableName,
ScanFilter: {
'active': {
"AttributeValueList": [{ "S": "1" }],
"ComparisonOperator": "EQ"
}
}
};
Hier ist der NodeJS Code:
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);
}
}
ich die gleiche Filterbedingung in der DynamoDB Konsole überprüft und das erwartete Ergebnis bekommen .
Wird Ihr Code in den 'LastEvaluatedKey! = 'Undefined'-Zustand versetzt? Mit anderen Worten: Haben Sie mehr als einen Aufruf von 'dynamodb.scan()'? Was ist der Code für die 'Callback()' Funktion? Dies läuft nicht in einer Lambda-Funktion, oder? –
@MarkB Nein, der Code behandelt nicht mehr als einen Aufruf von dynamodb.scan() und der Callback ist eine Node-Express-Anwendung, die auf einer EC2-Instanz ausgeführt wird. – acnn
können Sie versuchen, ExpressionAttributeValues: {': active': '1'} 'in den FilterExpressions – bharathp