View a markdown version of this page

Erweiterungen - AWS AppSync GraphQL

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. cachingKey Weitere Informationen zum Caching finden Sie unter Caching-Verhalten. https://docs.aws.amazon.com/appsync/latest/devguide/enabling-caching.html#caching-behavior

Beispiel 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.allClasses verwendet wurde. context.arguments.semester Wenn die Mutation aufgerufen wird und der Resolver ausgeführt wird und ein Eintrag erfolgreich gelöscht wurde, enthält die Antwort einen apiCacheEntriesDeleted Wert 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 zulassentrue. Das Argument lautet filterJsonObject (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.toSubscriptionFilter zum 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. true Das Argument lautet filterJsonObject (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.toSubscriptionFilter zum 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 dem fieldName Wert 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. true

    Im folgenden Beispiel werden abonnierte und verbundene Clients, die das Abonnement verwenden, ungültig gemacht, wenn der im onUserDelete Abonnement-Resolver definierte Invalidierungsfilter anhand des Werts ausgewertet wird. 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; }