DeleteItem - AWS AppSync

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 como DeleteItem. 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 e ds_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 entrada populateIndexFields 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 colunas gsi_ds_pk e gsi_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.