Extensions - AWS AppSync

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

extensionscontient un ensemble de méthodes permettant d'effectuer des actions supplémentaires dans vos résolveurs.

extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, string>) : 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. cachingKey Pour plus d'informations sur la mise en cache, consultez la section Comportement de mise en cache.

Exemple 1 :

Cet exemple évacue les éléments mis en cache pour un résolveur appelé Query.allClasses sur lequel une clé de mise en cache appelée a été utilisée. context.arguments.semester Lorsque la mutation est appelée et que le résolveur s'exécute, si une entrée est correctement effacée, la réponse contient une apiCacheEntriesDeleted valeur dans l'objet extensions qui indique le nombre d'entrées supprimées.

import { util, extensions } from '@aws-appsync/utils'; export const request = (ctx) => ({ payload: null }); export function response(ctx) { extensions.evictFromApiCache('Query', 'allClasses', { 'context.arguments.semester': ctx.args.semester, }); return null; }
Note

Cette fonction 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èrestrue. L'argument est filterJsonObject (Vous trouverez plus d'informations sur cet argument ci-dessous dans la filterJsonObject section Argument :). Voir Filtrage amélioré des abonnements.

Note

Vous pouvez utiliser cette fonction d'extension uniquement dans le gestionnaire de réponses d'un résolveur d'abonnement. Nous vous recommandons également de l'utiliser util.transform.toSubscriptionFilter pour créer votre filtre.

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 à. true L'argument est filterJsonObject (Vous trouverez plus d'informations sur cet argument ci-dessous dans la filterJsonObject section Argument :). Voir Filtrage amélioré des abonnements.

Note

Vous pouvez utiliser cette fonction d'extension uniquement dans le gestionnaire de réponses d'un résolveur d'abonnement. Nous vous recommandons également de l'utiliser util.transform.toSubscriptionFilter pour créer votre filtre.

extensions.invalidateSubscriptions(invalidationJsonObject)

Utilisé pour initier l'invalidation d'un abonnement suite à une mutation. L'argument est invalidationJsonObject (Vous trouverez plus d'informations sur cet argument ci-dessous dans la invalidationJsonObject section Argument :).

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 par requête. Si vous dépassez cette limite, vous recevrez une erreur GraphQL.

Argument : filterJsonObject

L'JSONobjet 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— Type d'opérateur.

  • value— Les valeurs à comparer à la fieldName valeur de la notification d'abonnement.

Voici un exemple d'attribution de ces attributs :

{ "fieldName" : "severity", "operator" : "le", "value" : context.result.severity }

Argument : invalidationJsonObject

invalidationJsonObjectdéfinit les éléments suivants :

  • subscriptionField— L'abonnement au schéma GraphQL à invalider. Un seul abonnement, défini comme 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. true

    L'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. true payload

    export const request = (ctx) => ({ payload: null }); export function response(ctx) { extensions.invalidateSubscriptions({ subscriptionField: 'onUserDelete', payload: { group: 'Developer', type: 'Full-Time' }, }); return ctx.result; }