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.
cachingKeyPour 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.allClassessur lequel une clé de mise en cache appelée a été utilisée.context.arguments.semesterLorsque 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 uneapiCacheEntriesDeletedvaleur 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és
true. L'argument estfilterJsonObject(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.toSubscriptionFilterpour 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.
trueL'argument estfilterJsonObject(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.toSubscriptionFilterpour 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 à lafieldNamevaleur 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.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.truepayloadexport const request = (ctx) => ({ payload: null }); export function response(ctx) { extensions.invalidateSubscriptions({ subscriptionField: 'onUserDelete', payload: { group: 'Developer', type: 'Full-Time' }, }); return ctx.result; }