View a markdown version of this page

Expressions relatives aux conditions de transaction - AWS AppSync GraphQL

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Expressions relatives aux conditions de transaction

Les expressions de conditions de transaction sont disponibles dans les requêtes des quatre types d'opérations dansTransactWriteItems, à savoir PutItemDeleteItem,UpdateItem, etConditionCheck.

PourPutItem, et DeleteItemUpdateItem, l'expression des conditions de transaction est facultative. PourConditionCheck, l'expression des conditions de transaction est requise.

Exemple 1

Le gestionnaire de demandes de DeleteItem fonctions transactionnelles suivant ne possède pas d'expression de condition. Par conséquent, il supprime l'élément dans 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 }), } ], }; }

Exemple 2

Le gestionnaire de requêtes de DeleteItem fonctions transactionnelles suivant possède une expression de condition de transaction qui permet à l'opération de réussir uniquement si l'auteur de cette publication porte un certain nom.

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 }, }), } ], }; }

Si la vérification de condition échoue, elle provoque TransactionCanceledException et les détails de l'erreur sont renvoyés dans ctx.result.cancellationReasons. Notez que par défaut, l'ancien élément de DynamoDB qui a entraîné l'échec de la vérification de l'état sera renvoyé. ctx.result.cancellationReasons

Spécifier une condition

Les objets PutItemUpdateItem,, et DeleteItem request permettent tous de spécifier une condition section facultative. Si cette section est omise, aucune vérification de condition n'est effectuée. Si elle est spécifiée, la condition doit être true pour que l'opération réussisse. Le ConditionCheck doit avoir une section condition à spécifier. La condition doit être vraie pour que l'ensemble de la transaction réussisse.

Une section condition a la structure suivante :

type TransactConditionCheckExpression = { expression: string; expressionNames?: { [key: string]: string }; expressionValues?: { [key: string]: string }; returnValuesOnConditionCheckFailure: boolean; };

Les champs suivants spécifient la condition :

expression

Expression de mise à jour elle-même. Pour plus d'informations sur la façon d'écrire des expressions de condition, consultez la documentation DynamoDB ConditionExpressions . Ce champ doit être spécifié.

expressionNames

Substituts des espaces réservés de nom des attributs de l'expression, sous la forme de paires clé-valeur. La clé correspond à un espace réservé utilisé dans l'expression et la valeur doit être une chaîne correspondant au nom d'attribut de l'élément dans DynamoDB. Ce champ est facultatif et doit être renseigné uniquement avec des substituts des espaces réservés de nom des attributs de l'expression utilisés dans l'expression.

expressionValues

Substituts des espaces réservés de valeur des attributs de l'expression, sous la forme de paires clé-valeur. La clé correspond à un espace réservé de valeur utilisé dans l'expression, et la valeur doit être typée. Pour plus d'informations sur la façon de spécifier une « valeur typée », voir Système de types (mappage des demandes). Cela doit être spécifié. Ce champ est facultatif et doit être renseigné uniquement avec des substituts des espaces réservés de valeur des attributs de l'expression utilisés dans l'expression.

returnValuesOnConditionCheckFailure

Spécifiez s'il faut récupérer l'élément dans DynamoDB en cas d'échec d'une vérification de condition. L'élément récupéré est dans ctx.result.cancellationReasons[<index>].item, où <index> est l'index de l'élément de demande qui a échoué à la vérification de condition. Cette valeur est définie par défaut sur true.