J'essaie de filtrer les données renvoyées par une opération d'analyse dynamodb en utilisant nodejs aws sdk mais les données retournées ont 0 élément.DynamoDB Scan FilterExpression retournant le résultat vide
Response : {"Items":[],"Count":0,"ScannedCount":15}
J'ai essayé avec les deux FilterExpression et ScanFilter mais obtenir le même résultat.
FilterExpression:
var params = {
TableName: tableName,
FilterExpression: 'active = :active',
ExpressionAttributeValues: {
':active': {
S: '1'
}
}
};
ScanFilter:
var params = {
TableName: tableName,
ScanFilter: {
'active': {
"AttributeValueList": [{ "S": "1" }],
"ComparisonOperator": "EQ"
}
}
};
Voici le code 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);
}
}
J'ai vérifié le même état de filtre dans la console DynamoDB et d'obtenir le résultat escompté .
Votre code entre-t-il dans la condition 'LastEvaluatedKey! = 'Undefined''? En d'autres termes, avez-vous plus d'un appel à 'dynamodb.scan()'? Quel est le code de la fonction 'callback()'? Cela ne fonctionne pas dans une fonction Lambda, n'est-ce pas? –
@MarkB Non, le code ne traite pas de plus d'un appel à dynamodb.scan() et le rappel est une application express de noeud s'exécutant sur une instance EC2. – acnn
pouvez-vous essayer 'ExpressionAttributeValues: {': active': '1'}' dans les FilterExpressions – bharathp