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.
Extensions
Note
Nous prenons désormais principalement en charge le runtime APPSYNC_JS et sa documentation. Pensez à utiliser le runtime APPSYNC_JS et ses guides ici.
$extensionscontient un ensemble de méthodes permettant d'effectuer des actions supplémentaires dans vos résolveurs.
$extensions.evictFromApiCache(String, String, Object) : Object-
Élimine un élément du cache AWS AppSync côté serveur. Le premier argument est le nom du type. Le deuxième argument est le nom du champ. Le troisième argument est un objet contenant des éléments de paire clé-valeur qui spécifient la valeur de la clé de mise en cache. Vous devez placer les éléments dans l'objet dans le même ordre que les clés de mise en cache dans le résolveur mis en cache.
cachingKeyNote
Cet utilitaire ne fonctionne que pour les mutations, pas pour les requêtes.
$extensions.setSubscriptionFilter(filterJsonObject)-
Définit des filtres d'abonnement améliorés. Chaque événement de notification d'abonnement est évalué par rapport aux filtres d'abonnement fournis et envoie des notifications aux clients si tous les filtres répondent aux critères
true. L'argument estfilterJsonObjecttel que décrit dans la section suivante.Note
Vous pouvez utiliser cette méthode d'extension uniquement dans les modèles de mappage des réponses d'un résolveur d'abonnement.
$extensions.setSubscriptionInvalidationFilter(filterJsonObject)-
Définit les filtres d'invalidation des abonnements. Les filtres d'abonnement sont évalués par rapport à la charge utile d'invalidation, puis invalident un abonnement donné s'ils sont évalués à.
trueL'argument estfilterJsonObjecttel que décrit dans la section suivante.Note
Vous pouvez utiliser cette méthode d'extension uniquement dans les modèles de mappage des réponses d'un résolveur d'abonnement.
$extensions.invalidateSubscriptions(invalidationJsonObject)-
Utilisé pour initier l'invalidation d'un abonnement suite à une mutation. L'argument est
invalidationJsonObjecttel que décrit dans la section suivante.Note
Cette extension ne peut être utilisée que dans les modèles de mappage des réponses des résolveurs de mutations.
Vous ne pouvez utiliser qu'au maximum cinq appels de
$extensions.invalidateSubscriptions()méthode uniques dans une seule demande. Si vous dépassez cette limite, vous recevrez une erreur GraphQL.
Argument : filterJsonObject
L'objet JSON définit des filtres d'abonnement ou d'invalidation. Il s'agit d'un ensemble de filtres dans unfilterGroup. Chaque filtre est un ensemble de filtres individuels.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
Chaque filtre possède trois attributs :
-
fieldName— Le champ du schéma GraphQL. -
operator— Le type d'opérateur. -
value— Les valeurs à comparer à lafieldNamevaleur de la notification d'abonnement.
Voici un exemple d'attribution de ces attributs :
{ "fieldName" : "severity", "operator" : "le", "value" : $context.result.severity }
Domaine : FieldName
Le type de chaîne fieldName fait référence à un champ défini dans le schéma GraphQL qui correspond fieldName à la charge utile de notification d'abonnement. Lorsqu'une correspondance est trouvée, le champ value du schéma GraphQL est comparé à celui du filtre value de notification d'abonnement. Dans l'exemple suivant, le fieldName filtre correspond au service champ défini dans un type GraphQL donné. Si la charge utile de notification contient un service champ avec un value équivalent àAWS
AppSync, le filtre est évalué comme suit : true
{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }
Champ : valeur
La valeur peut être d'un type différent en fonction de l'opérateur :
-
Nombre unique ou booléen
-
Exemples de chaînes :
"test","service" -
Exemples de chiffres :
1,2,45.75 -
Exemples booléens :,
truefalse
-
-
Paires de nombres ou de chaînes
-
Exemple de paire de chaînes :
["test1","test2"],["start","end"] -
Exemple de paire de numéros :
[1,4],[67,89],[12.45, 95.45]
-
-
Tableaux de nombres ou de chaînes
-
Exemple de tableau de chaînes :
["test1","test2","test3","test4","test5"] -
Exemple de tableau de nombres :
[1,2,3,4,5],[12.11,46.13,45.09,12.54,13.89]
-
Domaine : opérateur
Chaîne distinguant majuscules et minuscules avec les valeurs possibles suivantes :
| Opérateur | Description | Types de valeurs possibles |
|---|---|---|
| eq | Égal à | entier, flottant, chaîne, booléen |
| ne | Non égal à | entier, flottant, chaîne, booléen |
| le | Inférieur ou égal à | entier, flottant, chaîne |
| lt | Inférieur à | entier, flottant, chaîne |
| gm | Supérieur ou égal à | entier, flottant, chaîne |
| gt | Supérieure à | entier, flottant, chaîne |
| contient | Vérifie la présence d'une sous-séquence ou d'une valeur dans l'ensemble. | entier, flottant, chaîne |
| NE CONTIENT PAS | Vérifie l'absence de sous-séquence ou l'absence de valeur dans l'ensemble. | entier, flottant, chaîne |
| Commence par | Vérifie la présence d'un préfixe. | chaîne |
| dans | Vérifie les éléments correspondants figurant dans la liste. | Tableau de nombres entiers, flottants ou chaînes |
| notIn | Vérifie les éléments correspondants qui ne figurent pas dans la liste. | Tableau de nombres entiers, flottants ou chaînes |
| between | Entre deux valeurs | entier, flottant, chaîne |
| Contient n'importe quel | Contient des éléments communs | entier, flottant, chaîne |
Le tableau suivant décrit comment chaque opérateur est utilisé dans la notification d'abonnement.
Logique AND
Vous pouvez combiner plusieurs filtres à l'aide de la logique AND en définissant plusieurs entrées dans l'filtersobjet du filterGroup tableau. Dans l'exemple suivant, les filtres évaluent true si la notification d'abonnement contient un userId champ avec une valeur équivalente à 1 ET une valeur de group champ égale à Admin ouDeveloper.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
Logique OR
Vous pouvez combiner plusieurs filtres à l'aide de la logique OR en définissant plusieurs objets de filtre dans le filterGroup tableau. Dans l'exemple suivant, les filtres évaluent true si la notification d'abonnement contient un userId champ avec une valeur équivalente à 1 OU une valeur de group champ égale à Admin ouDeveloper.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
Exceptions
Notez que l'utilisation des filtres est soumise à plusieurs restrictions :
-
Dans l'
filtersobjet, il peut y avoir un maximum de cinqfieldNameéléments uniques par filtre. Cela signifie que vous pouvez combiner un maximum de cinqfieldNameobjets individuels à l'aide de la logique AND. -
Il peut y avoir un maximum de vingt valeurs pour l'
containsAnyopérateur. -
Il peut y avoir un maximum de cinq valeurs pour les
notInopérateursinet. -
Chaque chaîne peut comporter un maximum de 256 caractères.
-
Chaque comparaison de chaînes fait la distinction majuscules/minuscules.
-
Le filtrage d'objets imbriqués permet jusqu'à cinq niveaux de filtrage imbriqués.
-
Chacun
filterGrouppeut en avoir un maximum de 10filters. Cela signifie que vous pouvez en combiner un maximum de 10filtersen utilisant la logique OR.-
L'
inopérateur est un cas particulier de la logique OR. Dans l'exemple suivant, il y en a deuxfilters:{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }Le groupe de filtres précédent est évalué comme suit et est pris en compte dans le calcul de la limite maximale de filtres :
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "eq", "value" : "Admin" } ] }, { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "eq", "value" : "Developer" } ] } ] }
-
Argument : invalidationJsonObject
invalidationJsonObjectdéfinit les éléments suivants :
-
subscriptionField— L'abonnement au schéma GraphQL à invalider. Un seul abonnement, défini sous la forme d'une chaîne dans lesubscriptionField, est considéré comme invalide. -
payload— Une liste de paires clé-valeur utilisée comme entrée pour invalider les abonnements si le filtre d'invalidation est évalué par rapport à leurs valeurs.trueL'exemple suivant invalide les clients abonnés et connectés utilisant l'
onUserDeleteabonnement lorsque le filtre d'invalidation défini dans le résolveur d'abonnement est évalué par rapport à la valeur.truepayload$extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })