Paweł Łukasiewicz
2024-02-10
Paweł Łukasiewicz
2024-02-10
Udostępnij Udostępnij Kontakt
Wprowadzenie

Usunięcie elementu z tabeli odbywa się przy wykorzystaniu metody DeleteItem. Pomijając standardowe kroki musimy przygotować żądanie wykorzystując instancję klasy DeletemItemRequest, która wymaga podania od nas nazwy tabeli oraz klucza głównego elementu. Ostatnim krokim jest wykonanie metody DeleteItem, które możecie zobaczyć w poniższym przykładzie:

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

    var response = await _amazonDynamoDB.DeleteItemAsync(request);

    return Json(response);
}
Spójrzcie jak wygląda odpowiedź (do tej pory korzystaliśmy ze statusu): DynamoDB: kasowanie elementu

Opcjonalne parametry

W tym przypadku możemy również podać parametry opcjonalne do których zaliczamy ExpressionAttributeValue oraz CondtionExpression, które pozwalają zdefiniować warunki usunięcia danego elementu. W naszym przypadku oprzemy się na jednym z atrybutów, tj. quantity. Może nie jest to najbardziej fortunny przykład ale w ‘realnym świecie’ moglibyśmy np. usunąć książkę jeżeli nie została jeszcze opublikowana (nie jest np. gotowa do sprzedaży):

public async Task<ActionResult<string>> DeleteItemWithParameters()
{
    var request = new DeleteItemRequest
    {
        TableName = TableName,
        Key = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "1" } }, },
        ExpressionAttributeNames = new Dictionary<string, string>()
        {
            { "#Q", "Quantity" }
        },
        ExpressionAttributeValues = new Dictionary<string, AttributeValue>()
        {
            { ":condition", new AttributeValue {N = "4"} }
        },
        ConditionExpression = "#Q = :condition"
    };

    var response = await _amazonDynamoDB.DeleteItemAsync(request);

    return Json(response);
}
Jeżeli wszystko przebiegnie pomyślnie zobaczycie poniższą odpowiedź: DynamoDB: kasowanie elementu