Por que a verificação do DynamoDB com Limit e FilterExpression não retorna os itens que correspondem aos requisitos de filtro?
Preciso fazer uma verificação com limite e uma condição no DynamoDB.
odocs diz:
Em uma resposta, o DynamoDB retorna todos os resultados correspondentes no escopo do valor Limit. Por exemplo, se você emitir uma solicitação de consulta ou verificação com um valor limite de 6 e sem uma expressão de filtro, o DynamoDB retornará os seis primeiros itens da tabela que correspondem às principais condições especificadas na solicitação (ou apenas os seis primeiros itens em o caso de uma digitalização sem filtro). Se você também fornecer um valor de FilterExpression, o DynamoDB retornará os itens nos seis primeiros que também correspondem aos requisitos de filtro (o número de resultados retornados será menor ou igual a 6).
O 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);
}
});
Definições da tabela XXXX:
No código acima, se eu remover oLimit
parâmetro, o DynamoDB retornará os itens que correspondem aos requisitos de filtro. Então, as condições estão boas. Mas quando digitalizo comLimit
parâmetro, o resultado está vazio.
A tabela XXXX possui 5 itens. Apenas os dois primeiros têm oRemoved
atributo. Quando digitalizo semLimit
parâmetro, o DynamoDB retorna os 3 itens semRemoved
atributo.
O que estou fazendo de errado?