

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
<a name="js-aws-appsync-resolver-reference-dynamodb-transaction-condition-expressions"></a>

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 name="js-id22"></a>

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
<a name="js-id23"></a>

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
<a name="js-id24"></a>

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 escrever expressões condicionais, consulte a documentação do [ ConditionExpressions DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html). 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)](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request). 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.