¿Por qué el escaneo DynamoDB con Limit y FilterExpression no devuelve los elementos que coinciden con los requisitos del filtro?
Necesito hacer un escaneo con límite y una condición en DynamoDB.
losdocs dice:
En una respuesta, DynamoDB devuelve todos los resultados coincidentes dentro del alcance del valor Límite. Por ejemplo, si emite una solicitud de consulta o exploración con un valor límite de 6 y sin una expresión de filtro, DynamoDB devuelve los primeros seis elementos de la tabla que coinciden con las condiciones clave especificadas en la solicitud (o solo los primeros seis elementos en el caso de un escaneo sin filtro). Si también proporciona un valor de FilterExpression, DynamoDB devolverá los elementos en los primeros seis que también coincidan con los requisitos del filtro (el número de resultados devueltos será menor o igual a 6).
El código (NODEJS):
var params = {
ExpressionAttributeNames: {"#user": "User"},
ExpressionAttributeValues: {":user": parseInt(user.id)},
FilterExpression: "#user = :user and attribute_not_exists(Removed)",
Limit: 2,
TableName: "XXXX"
};
DynamoDB.scan(params, function(err, data) {
if (err) {
dataToSend.message = "Unable to query. Error: " + err.message;
} else if (data.Items.length == 0) {
dataToSend.message = "No results were found.";
} else {
dataToSend.data = data.Items;
console.log(dataToSend);
}
});
Definiciones de la tabla XXXX:
En el código anterior, si elimino elLimit
parámetro, DynamoDB devolverá los elementos que coinciden con los requisitos del filtro. Entonces, las condiciones están bien. Pero cuando escaneo conLimit
parámetro, el resultado está vacío.
La mesa XXXX tiene 5 artículos. Solo los 2 primeros tienen elRemoved
atributo. Cuando escaneo sinLimit
parámetro, DynamoDB devuelve los 3 elementos sinRemoved
atributo.
¿Qué estoy haciendo mal?