DeleteItem
A solicitação DeleteItem
permite a você orientar a função do DynamoDB do AWS AppSync a realizar uma solicitação DeleteItem
ao DynamoDB. Além disso, permite especificar:
-
A chave do item no DynamoDB
-
Condições para que a operação seja bem-sucedida
A solicitação DeleteItem
tem a seguinte estrutura:
type DynamoDBDeleteItemRequest = { operation: 'DeleteItem'; key: { [key: string]: any }; condition?: ConditionCheckExpression; customPartitionKey?: string; populateIndexFields?: boolean; _version?: number; };
Os campos são definidos da seguinte forma:
Campos DeleteItem
-
operation
-
A operação do DynamoDB para execução. Para executar a operação
DeleteItem
do DynamoDB, ela deve ser definida comoDeleteItem
. Este valor é obrigatório. -
key
-
A chave do item no DynamoDB. Os itens do DynamoDB podem ter uma única chave de hash ou uma chave de hash e uma chave de classificação, dependendo da estrutura da tabela. Para obter mais informações sobre como especificar um "valor digitado", consulte Sistema de tipo (mapeamento da solicitação). Este valor é obrigatório.
-
condition
-
Uma condição para determinar se a solicitação deve ser bem-sucedida ou não, com base no estado do objeto que já está no DynamoDB. Se nenhuma condição for especificada, a solicitação
DeleteItem
excluirá um item independentemente do estado atual. Para obter mais informações sobre as condições, consulte Expressões de condição. Este valor é opcional. -
_version
-
Um valor numérico que representa a versão conhecida mais recente de um item. Este valor é opcional. Esse campo é usado para Detecção de conflitos e só é compatível com fontes de dados versionadas.
customPartitionKey
-
Quando ativado, esse valor de string modifica o formato dos registros
ds_pk
eds_sk
usados pela tabela de sincronização delta quando o versionamento é ativado (para obter mais informações, consulte Detecção e sincronização de conflitos no Guia do desenvolvedor do AWS AppSync). Quando ativado, o processamento da entradapopulateIndexFields
também é ativado. Esse campo é opcional. populateIndexFields
-
Um valor booleano que, quando ativado com
customPartitionKey
, cria novas entradas para cada registro na tabela de sincronização delta, especificamente nas colunasgsi_ds_pk
egsi_ds_sk
. Para obter mais informações, consulte Detecção e sincronização de conflitos no Guia do desenvolvedor do AWS AppSync. Esse campo é opcional.
O item excluído do DynamoDB é automaticamente convertido nos tipos primitivos GraphQL e JSON e está disponível no resultado do contexto (context.result
).
Para obter mais informações sobre a conversão de tipo do DynamoDB, consulte Sistema de tipo (mapeamento da resposta).
Para obter mais informações sobre resolvedores de JavaScript, consulte Visão geral de resolvedores de JavaScript.
Exemplo 1
O exemplo a seguir é um manipulador de solicitação de função para uma mutação GraphQL deleteItem(id: ID!)
: Se existir um item com esse ID, ele será excluído.
import { util } from '@aws-appsync/utils'; export function request(ctx) { return { operation: 'DeleteItem', key: util.dynamodb.toMapValues({ id: ctx.args.id }), }; }
Exemplo 2
O exemplo a seguir é um manipulador de solicitação de função para uma mutação GraphQL deleteItem(id: ID!, expectedVersion: Int!)
: Se existir um item com esse ID, ele será excluído, mas apenas se o campo version
estiver definido como expectedVersion
:
import { util } from '@aws-appsync/utils'; export function request(ctx) { const { id, expectedVersion } = ctx.args; const condition = { id: { attributeExists: true }, version: { eq: expectedVersion }, }; return { operation: 'DeleteItem', key: util.dynamodb.toMapValues({ id }), condition: util.transform.toDynamoDBConditionExpression(condition), }; }
Para obter mais informações sobre a API DeleteItem
do DynamoDB, consulte a Documentação da API do DynamoDB.