View a markdown version of this page

Extensions - 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.

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, any>) : Object

Supprime 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 de 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 Comportement de mise en cache.

Exemple 1 :

Cet exemple supprime les éléments qui ont été 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 effacée avec succès, 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 sont évaluéstrue. L'argument est filterJsonObject (Vous trouverez plus d'informations sur cet argument ci-dessous dans la JsonObject section Argument : filtre.). Consultez la section Filtrage des abonnements amélioré.

Note

Vous ne pouvez utiliser cette fonction d'extension que 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é si les filtres sont évalués comme tel. true L'argument est filterJsonObject (Vous trouverez plus d'informations sur cet argument ci-dessous dans la JsonObject section Argument : filtre.). Consultez la section Filtrage des abonnements amélioré.

Note

Vous ne pouvez utiliser cette fonction d'extension que 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 JsonObject section Argument : invalidation.).

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 que cinq appels de extensions.invalidateSubscriptions() méthode uniques au maximum pour une seule demande. Si vous dépassez cette limite, vous recevrez une erreur GraphQL.

Argument : filtre JsonObject

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 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 : invalidation JsonObject

Le invalidationJsonObject définit ce qui suit :

  • subscriptionField— L'abonnement au schéma GraphQL à invalider. Un abonnement unique, défini comme une chaîne dans lesubscriptionField, est considéré comme invalidé.

  • payload— Liste de paires clé-valeur utilisée comme entrée pour invalider les abonnements si le filtre d'invalidation les évalue 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; }