Paweł Łukasiewicz
2024-01-20
Paweł Łukasiewicz
2024-01-20
Udostępnij Udostępnij Kontakt
Wprowadzenie

Pobieranie elementów odbywa się przy pomocy metody GetItem. W tym (oraz w kolejnych wpisach) pomijam już kroki przygotowawcze (szczegółowy opis) i skupiamy się na kluczowych (z perspektywy wpisu) krokach. W naszym przypadku będzie to przygotowanie żądania przy wykorzystaniu obiektu GetItemRequest oraz wykonanie metody GetItem przy wykorzystaniu powyższego żądania jako parametru tej metody. Spójrzcie na poniższy przykład wykorzystujący elementy tabeli CarCatalog:

public async Task<ActionResult<string>> GetItem()
{
    var request = new GetItemRequest()
    {
        TableName = TableName,
        Key = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "1" } }, }
    };

    var response = await _amazonDynamoDB.GetItemAsync(request);

    // Sprawdzenie odpowiedzi (lista atrybutów)
    var result = response.Item;

    return Json(result);
}

W odpowiedzi dostaniemy listę atrybutów: DynamoDB: lista atrybutów elementu Możecie zobaczyć, że aktualizacja danych (na bazie dodatkowych parametrów opcjonalnych) przebiegła pomyślnie i doszło do zmiany ceny oraz koloru naszego auta (poprzedni wpis).

Parametry opcjonalne

Podobnie jak w poprzednim przykładzie możemy posłużyć się parametrami opcjonalnymi naszego żądania. W tym przypadku są oczywiście inne ale pozwalają np. na zdefiniowanie atrybutów do pobrania, tj. ProjectionExpression. Dodatkowo użycie parametru ConsistentRead pozwala na wykonanie silnie spójnego odczytu. Na ten temat więcej napisałem w tym wpisie: DynamoDB - podstawowe pojęcia.

public async Task<ActionResult<string>> GetItemWithParameters()
{
    var request = new GetItemRequest
    {
        TableName = TableName,
        Key = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "1" } }, },
        ProjectionExpression = "Id, Color, Price",
        ConsistentRead = true
    };

    var response = await _amazonDynamoDB.GetItemAsync(request);

    // Sprawdzenie odpowiedzi (lista interesujących nas atrybutów)
    var result = response.Item;

    return Json(result);
}
Tym razem w odpowiedzi dostaliśmy jedynie interesujące nas atrybuty danego elementu: DynamoDB: wskazany atrybut elementu