As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Expressões de condição da transação
As expressões de condição da transação estão disponíveis em solicitações de todos os quatro tipos de operações em TransactWriteItems, ou seja, PutItem, DeleteItem, UpdateItem e ConditionCheck.
Em PutItem, DeleteItem e UpdateItem, a expressão de condição da transação é opcional. Em ConditionCheck, a expressão de condição da transação é necessária.
Exemplo 1
A função transacional DeleteItem a seguir não tem uma expressão de condição. Como resultado, ele exclui o item no DynamoDB.
import { util } from '@aws-appsync/utils'; export function request(ctx) { const { postId } = ctx.args; return { operation: 'TransactWriteItems', transactItems: [ { table: 'posts', operation: 'DeleteItem', key: util.dynamodb.toMapValues({ postId }), } ], }; }
Exemplo 2
O manipulador da solicitação da função transacional DeleteItem a seguir possui uma expressão de condição da transação que permite que a operação seja bem-sucedida apenas se o autor dessa postagem for igual a determinado nome.
import { util } from '@aws-appsync/utils'; export function request(ctx) { const { postId, authorName} = ctx.args; return { operation: 'TransactWriteItems', transactItems: [ { table: 'posts', operation: 'DeleteItem', key: util.dynamodb.toMapValues({ postId }), condition: util.transform.toDynamoDBConditionExpression({ authorName: { eq: authorName }, }), } ], }; }
Se a verificação de condição falhar, causará TransactionCanceledException e os detalhes de erro serão retornados em ctx.result.cancellationReasons. Observe que, por padrão, o item antigo no DynamoDB que fez a verificação da condição falhar será retornado em ctx.result.cancellationReasons.
Especificação de uma condição
Os objetos da solicitação PutItem, UpdateItem e DeleteItem permitem que uma seção condition opcional seja especificada. Se omitida, nenhuma verificação de condição é feita. Se especificada, a condição deve ser verdadeira para que a operação seja bem-sucedida. A ConditionCheck deve ter uma seção condition a ser especificada. A condição deve ser verdadeira para que toda a transação seja bem-sucedida.
A seção condition tem a seguinte estrutura:
type TransactConditionCheckExpression = { expression: string; expressionNames?: { [key: string]: string }; expressionValues?: { [key: string]: string }; returnValuesOnConditionCheckFailure: boolean; };
Os campos a seguir especificam a condição:
-
expression -
A própria expressão de atualização. Para obter mais informações sobre como gravar expressões de condição, consulte a Documentação ConditionExpressions do DynamoDB. Esse campo deve ser especificado.
-
expressionNames -
As substituições para espaços reservados de nome do atributo da expressão, na forma de pares de chave/valor. A chave corresponde a um espaço reservado de nome usado na expressão e o valor deve ser uma string que corresponde ao nome do atributo do item no DynamoDB. Esse campo é opcional e deve ser preenchido apenas por substituições para espaços reservados de nome do atributo da expressão usados na expressão.
-
expressionValues -
As substituições para espaços reservados de valor do atributo da expressão, na forma de pares chave-valor. A chave corresponde a um espaço reservado de valor usado na expressão e o valor deve ser um valor digitado. Para obter mais informações sobre como especificar um "valor digitado", consulte Sistema de tipo (Mapeamento de solicitação). Isso deve ser especificado. Esse campo é opcional e deve ser preenchido apenas por substituições para espaços reservados de valor do atributo da expressão usados na expressão.
-
returnValuesOnConditionCheckFailure -
Especifique se deseja recuperar o item no DynamoDB quando houver falha na verificação de condição. O item recuperado estará em
ctx.result.cancellationReasons[<index>].item, onde<index>é o índice do item de solicitação cuja verificação de condição falhou. Esse valor padrão é verdadeiro.