Erweiterungen - AWS AppSync

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, mit denen Sie zusätzliche Aktionen in Ihren Resolvern ausführen können.

extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, string>) : Object

Löscht ein Element 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 Zwischenspeicher-Schlüsselwert angeben. Sie müssen die Elemente im Objekt in derselben Reihenfolge platzieren wie die Caching-Schlüssel in den zwischengespeicherten Resolvern. cachingKey Weitere Informationen zum Zwischenspeichern finden Sie unter Caching-Verhalten.

Beispiel 1:

In diesem Beispiel werden die Elemente entfernt, die für einen aufgerufenen Resolver zwischengespeichert wurden, für den ein aufgerufener Query.allClasses Caching-Schlüssel 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 sendet Benachrichtigungen an Kunden, wenn alle Filter als erfüllt geltentrue. Das Argument ist filterJsonObject (Weitere Informationen zu diesem Argument finden Sie weiter unten im filterJsonObject Abschnitt Argument:.). Siehe Verbesserte Abonnementfilterung.

Anmerkung

Sie können diese Erweiterungsfunktion nur im Antworthandler eines Abonnement-Resolvers verwenden. Außerdem empfehlen wir die Verwendung, util.transform.toSubscriptionFilter um Ihren Filter zu erstellen.

extensions.setSubscriptionInvalidationFilter(filterJsonObject)

Definiert Filter für die Invalidierung von Abonnements. Abonnementfilter werden anhand der Payload für die Invalidierung bewertet und machen dann ein bestimmtes Abonnement ungültig, wenn die Filter Folgendes ergeben. true Das Argument ist filterJsonObject (Weitere Informationen zu diesem Argument finden Sie weiter unten im filterJsonObject Abschnitt Argument:.). Siehe Verbesserte Abonnementfilterung.

Anmerkung

Sie können diese Erweiterungsfunktion nur im Antworthandler eines Abonnement-Resolvers verwenden. Außerdem empfehlen wir die Verwendung, util.transform.toSubscriptionFilter um Ihren Filter zu erstellen.

extensions.invalidateSubscriptions(invalidationJsonObject)

Wird verwendet, um die Invalidierung eines Abonnements aufgrund einer Mutation einzuleiten. Das Argument lautet invalidationJsonObject (Weitere Informationen zu diesem Argument finden Sie weiter unten im invalidationJsonObject Abschnitt Argument:.).

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() Methodenaufrufen verwenden. Wenn Sie dieses Limit überschreiten, erhalten Sie einen GraphQL-Fehler.

Argument: filterJsonObject

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: invalidationJsonObject

Das invalidationJsonObject definiert Folgendes:

  • subscriptionField— Das GraphQL-Schemaabonnement, das ungültig werden soll. Ein einzelnes Abonnement, das als Zeichenfolge in der definiert istsubscriptionField, wird für ungültig erklärt.

  • payload— Eine Liste mit Schlüssel-Wert-Paaren, die als Eingabe für die Ungültigerklärung von Abonnements verwendet wird, wenn der Invalidierungsfilter A anhand ihrer Werte auswertet. true

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