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
extensions
contient 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 uneapiCacheEntriesDeleted
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ères
true
. L'argument estfilterJsonObject
(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 estfilterJsonObject
(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 à lafieldName
valeur de la notification d'abonnement.
Voici un exemple d'attribution de ces attributs :
{ "fieldName" : "severity", "operator" : "le", "value" : context.result.severity }
Argument : invalidationJsonObject
invalidationJsonObject
dé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'
onUserDelete
abonnement 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; }