Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erweiterungen
extensionsenthält eine Reihe von Methoden, um zusätzliche Aktionen innerhalb Ihrer Resolver durchzuführen.
extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, any>) : Object-
Löscht ein Objekt aus dem serverseitigen AWS AppSync Cache. Das erste Argument ist der Typname. Das zweite Argument ist der Feldname. Das dritte Argument ist ein Objekt, das Schlüssel-Wert-Paar-Elemente enthält, die den Cache-Schlüsselwert angeben. Sie müssen die Elemente im Objekt in derselben Reihenfolge platzieren wie die Caching-Schlüssel im zwischengespeicherten Resolver.
cachingKeyWeitere Informationen zum Caching finden Sie unter Caching-Verhalten. https://docs.aws.amazon.com/appsync/latest/devguide/enabling-caching.html#caching-behaviorBeispiel 1:
In diesem Beispiel werden die Elemente gelöscht, die für einen Resolver zwischengespeichert wurden, für den ein Caching-Schlüssel namens
Query.allClassesverwendet wurde.context.arguments.semesterWenn die Mutation aufgerufen wird und der Resolver ausgeführt wird und ein Eintrag erfolgreich gelöscht wurde, enthält die Antwort einenapiCacheEntriesDeletedWert im Erweiterungsobjekt, der angibt, wie viele Einträge gelöscht wurden.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; }Anmerkung
Diese Funktion funktioniert nur für Mutationen, nicht für Abfragen.
extensions.setSubscriptionFilter(filterJsonObject)-
Definiert erweiterte Abonnementfilter. Jedes Abonnementbenachrichtigungsereignis wird anhand der bereitgestellten Abonnementfilter bewertet und Benachrichtigungen an Kunden gesendet, wenn alle Filter dies zulassen
true. Das Argument lautetfilterJsonObject(Weitere Informationen zu diesem Argument finden Sie weiter unten im JsonObject Abschnitt Argument: Filter.) Siehe Verbesserte Abonnementfilterung.Anmerkung
Sie können diese Erweiterungsfunktion nur im Response-Handler eines Abonnement-Resolvers verwenden. Wir empfehlen außerdem, die Verwendung
util.transform.toSubscriptionFilterzum Erstellen Ihres Filters zu verwenden. extensions.setSubscriptionInvalidationFilter(filterJsonObject)-
Definiert Filter für die Invalidierung von Abonnements. Abonnementfilter werden anhand der Nutzlast für die Invalidierung ausgewertet und machen dann ein bestimmtes Abonnement ungültig, wenn die Filter das Ergebnis ergeben.
trueDas Argument lautetfilterJsonObject(Weitere Informationen zu diesem Argument finden Sie weiter unten im JsonObject Abschnitt Argument: Filter.) Siehe Verbesserte Abonnementfilterung.Anmerkung
Sie können diese Erweiterungsfunktion nur im Response-Handler eines Abonnement-Resolvers verwenden. Wir empfehlen außerdem, die Verwendung
util.transform.toSubscriptionFilterzum Erstellen Ihres Filters zu verwenden. extensions.invalidateSubscriptions(invalidationJsonObject)-
Wird verwendet, um die Ungültigerklärung eines Abonnements aufgrund einer Mutation einzuleiten. Das Argument ist
invalidationJsonObject(Weitere Informationen zu diesem Argument finden Sie weiter unten im JsonObject Abschnitt Argument: Invalidierung.)Anmerkung
Diese Erweiterung kann nur in den Response-Mapping-Vorlagen der Mutationsresolver verwendet werden.
Sie können in einer einzelnen Anfrage nur maximal fünf eindeutige
extensions.invalidateSubscriptions()Methodenaufrufe verwenden. Wenn Sie dieses Limit überschreiten, erhalten Sie einen GraphQL-Fehler.
Argument: Filter JsonObject
Das JSON-Objekt definiert entweder Abonnement- oder Invalidierungsfilter. Es ist eine Reihe von Filtern in einemfilterGroup. Jeder Filter ist eine Sammlung einzelner Filter.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
Jeder Filter hat drei Attribute:
-
fieldName— Das GraphQL-Schemafeld. -
operator— Der Operatortyp. -
value— Die Werte, die mit demfieldNameWert der Abonnementbenachrichtigung verglichen werden sollen.
Im Folgenden finden Sie ein Beispiel für die Zuweisung dieser Attribute:
{ "fieldName" : "severity", "operator" : "le", "value" : context.result.severity }
Argument: Ungültigerklärung JsonObject
Das invalidationJsonObject definiert Folgendes:
-
subscriptionField— Das GraphQL-Schema-Abonnement, das ungültig werden soll. Ein einzelnes Abonnement, das in der als Zeichenfolge definiert istsubscriptionField, wird für die Ungültigerklärung in Betracht gezogen. -
payload— Eine Liste mit Schlüssel-Wert-Paaren, die als Eingabe für die Ungültigerklärung von Abonnements verwendet wird, wenn der Invalidierungsfilter anhand ihrer Werte ausgewertet wird.trueIm folgenden Beispiel werden abonnierte und verbundene Clients, die das Abonnement verwenden, ungültig gemacht, wenn der im
onUserDeleteAbonnement-Resolver definierte Invalidierungsfilter anhand des Werts ausgewertet wird.truepayloadexport const request = (ctx) => ({ payload: null }); export function response(ctx) { extensions.invalidateSubscriptions({ subscriptionField: 'onUserDelete', payload: { group: 'Developer', type: 'Full-Time' }, }); return ctx.result; }