Почему мой лимит запросов .NET DynamoDB не работает?

#.net #amazon-dynamodb #limit

#.net #amazon-dynamodb #ограничение

Вопрос:

смотрю вокруг уже около недели и ничего не могу найти, поэтому я собираюсь опубликовать это.

Работаю над проектом. Я могу запросить свой индекс DynamoDB, но, похоже, предельные параметры в моем запросе не работают. Любая помощь?

 var request = new QueryRequest
{
    TableName = "exampleTable",
    IndexName = "exampleIndex",
    Limit = 3,
    ExclusiveStartKey = lastKeyEvaluated,
    ExpressionAttributeValues = new Dictionary<string, AttributeValue> {
        { ":val", new AttributeValue { S = "Yes" } },
        { ":v_1", new AttributeValue { N = "0" }}
    },
    KeyConditionExpression = "Active= :val and Amount > :v_1",
    ProjectionExpression = "Active, Amount",
    ScanIndexForward = false
};
 

У меня в таблице 6 элементов. (Прототипирование более крупного проекта), один из которых имеет отрицательное «Количество». Так что один из них отфильтровывается. Однако я по-прежнему получаю 5 ответов, а не только 3. Кажется, что-то не так с моими предельными параметрами. Любая помощь?

Спасибо!

Комментарии:

1. я думаю, что это должно быть max-items вместо limit docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html

2. Похоже, это для CLI. Похоже, что он не передается вместе с SDK. Но я ценю комментарий.

Ответ №1:

Хорошо, круто, так что в основном проблема была не в структуре моего запроса, а в фактической обработке моего queryasync. В то время как я печатал информацию до того, как был оценен окончательный ключ, теперь я вызвал свой метод печати после оценки окончательного ключа.

 Client.QueryAsync(request, (result) => {

            if (result.Exception == null)
            {
                 //previous spot for the foreach loop and the print method.
                
                lastKeyEvaluated = result.Response.LastEvaluatedKey;
                if (lastKeyEvaluated != null amp;amp; lastKeyEvaluated.Count != 0)
                {
                    foreach (Dictionary<string, AttributeValue> item
                    in result.Response.Items)
                    {
                        PrintItem(item);
                    }
                    Query(lastKeyEvaluated);
                }
                else
                {
                    Debug.Log("last one");
                }
            }
            else
            {
                Debug.Log(result.Exception);
            }

        });