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

Anmerkung

Wir unterstützen jetzt hauptsächlich die _JS-Laufzeit und ihre Dokumentation. APPSYNC Bitte erwägen Sie, die APPSYNC _JS-Laufzeit und ihre Anleitungen hier zu verwenden.

$extensionsenthält eine Reihe von Methoden, mit denen Sie zusätzliche Aktionen in Ihren Resolvern ausführen können.

$extensions.evictFromApiCache(String, String, Object) : 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

Anmerkung

Dieses Tool 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 wird filterJsonObject im folgenden Abschnitt beschrieben.

Anmerkung

Sie können diese Erweiterungsmethode nur in den Antwortzuordnungsvorlagen eines Abonnement-Resolvers verwenden.

$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 wird im filterJsonObject folgenden Abschnitt beschrieben.

Anmerkung

Sie können diese Erweiterungsmethode nur in den Antwortzuordnungsvorlagen eines Abonnement-Resolvers verwenden.

$extensions.invalidateSubscriptions(invalidationJsonObject)

Wird verwendet, um die Invalidierung eines Abonnements aufgrund einer Mutation einzuleiten. Das Argument ist invalidationJsonObject wie im folgenden Abschnitt beschrieben.

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 }

Feld: fieldName

Der String-Typ fieldName bezieht sich auf ein im GraphQL-Schema definiertes Feld, das mit der Payload fieldName in der Abonnementbenachrichtigung übereinstimmt. Wenn eine Übereinstimmung gefunden wird, wird das Feld value des GraphQL-Schemas mit dem value des Abonnementbenachrichtigungsfilters verglichen. Im folgenden Beispiel entspricht der fieldName Filter dem service Feld, das in einem bestimmten GraphQL-Typ definiert ist. Wenn die Benachrichtigungs-Payload ein service Feld mit einer value Entsprechung von enthältAWS AppSync, wird der Filter wie folgt ausgewertet: true

{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }

Feld: Wert

Der Wert kann je nach Operator einen anderen Typ haben:

  • Eine einzelne Zahl oder ein boolescher Wert

    • Beispiele für Zeichenketten:, "test" "service"

    • Beispiele für Zahlen:1,2, 45.75

    • Boolesche Beispiele:, true false

  • Paare von Zahlen oder Zeichenketten

    • Beispiel für ein Zeichenkettenpaar:["test1","test2"], ["start","end"]

    • Beispiel für ein Zahlenpaar:[1,4],[67,89], [12.45, 95.45]

  • Reihen von Zahlen oder Zeichenketten

    • Beispiel für ein String-Array: ["test1","test2","test3","test4","test5"]

    • Beispiel für ein Zahlenarray:[1,2,3,4,5], [12.11,46.13,45.09,12.54,13.89]

Feld: Operator

Eine Zeichenfolge, bei der Groß- und Kleinschreibung beachtet wird, mit den folgenden möglichen Werten:

Operator Beschreibung Mögliche Werttypen
eq Gleich Ganzzahl, Gleitkommazahl, Zeichenfolge, Boolean
Ein Ungleich Ganzzahl, Gleitkommazahl, Zeichenfolge, Boolean
le Kleiner als oder gleich Ganzzahl, Gleitkommazahl, Zeichenfolge
lt kleiner als Ganzzahl, Fließkommazahl, Zeichenfolge
ge Größer als oder gleich Ganzzahl, Gleitkommazahl, Zeichenfolge
gt größer als Ganzzahl, Fließkommazahl, Zeichenfolge
enthält Sucht nach einer Teilsequenz oder einem Wert in der Menge. Ganzzahl, Fließkommazahl, Zeichenfolge
notContains Prüft, ob eine Teilsequenz oder ein Wert in der Menge fehlt. Ganzzahl, Fließkommazahl, Zeichenfolge
beginsWith Sucht nach einem Präfix. Zeichenfolge
in Sucht nach passenden Elementen in der Liste. Array aus Ganzzahl, Gleitkommazahl oder Zeichenfolge
notIn Sucht nach passenden Elementen, die nicht in der Liste enthalten sind. Array aus Ganzzahl, Gleitkommazahl oder Zeichenfolge
zwischen Zwischen zwei Werten Ganzzahl, Gleitkommazahl, Zeichenfolge
containsAny Enthält gemeinsame Elemente Ganzzahl, Fließkommazahl, Zeichenfolge

In der folgenden Tabelle wird beschrieben, wie die einzelnen Operatoren in der Abonnementbenachrichtigung verwendet werden.

eq (equal)

Der eq Operator prüft, true ob der Wert des Felds für die Abonnementbenachrichtigung dem Wert des Filters entspricht und diesem genau entspricht. Im folgenden Beispiel bewertet der Filter, true ob die Abonnementbenachrichtigung ein service Feld enthält, dessen Wert entspricht. AWS AppSync

Mögliche Werttypen: Integer, Float, String, Boolean

{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }
ne (not equal)

Der ne Operator prüft, true ob sich der Wert des Felds für die Abonnementbenachrichtigung vom Wert des Filters unterscheidet. Im folgenden Beispiel prüft der Filter, true ob die Abonnementbenachrichtigung ein service Feld mit einem anderen Wert als enthält. AWS AppSync

Mögliche Werttypen: Integer, Float, String, Boolean

{ "fieldName" : "service", "operator" : "ne", "value" : "AWS AppSync" }
le (less or equal)

Der le Operator prüft, true ob der Wert des Felds für die Abonnementbenachrichtigung kleiner oder gleich dem Wert des Filters ist. Im folgenden Beispiel bewertet der Filter, true ob die Abonnementbenachrichtigung ein size Feld enthält, dessen Wert kleiner oder gleich ist. 5

Mögliche Werttypen: Integer, Float, String

{ "fieldName" : "size", "operator" : "le", "value" : 5 }
lt (less than)

Der lt Operator prüft, true ob der Wert des Felds für die Abonnementbenachrichtigung niedriger als der Wert des Filters ist. Im folgenden Beispiel bewertet der Filter, true ob die Abonnementbenachrichtigung ein size Feld mit einem niedrigeren Wert als enthält. 5

Mögliche Werttypen: Integer, Float, String

{ "fieldName" : "size", "operator" : "lt", "value" : 5 }
ge (greater or equal)

Der ge Operator prüft, true ob der Wert des Felds für die Abonnementbenachrichtigung größer oder gleich dem Wert des Filters ist. Im folgenden Beispiel bewertet der Filter, true ob die Abonnementbenachrichtigung ein size Feld enthält, dessen Wert größer oder gleich ist. 5

Mögliche Werttypen: Integer, Float, String

{ "fieldName" : "size", "operator" : "ge", "value" : 5 }
gt (greater than)

Der gt Operator prüft, true ob der Wert des Felds für die Abonnementbenachrichtigung größer als der Wert des Filters ist. Im folgenden Beispiel bewertet der Filter, true ob die Abonnementbenachrichtigung ein size Feld mit einem Wert größer als enthält. 5

Mögliche Werttypen: Integer, Float, String

{ "fieldName" : "size", "operator" : "gt", "value" : 5 }
contains

Der contains Operator sucht nach einer Teilzeichenfolge, Teilsequenz oder einem Wert in einer Menge oder einem einzelnen Element. Ein Filter mit dem contains Operator überprüft, true ob der Wert des Felds für die Abonnementbenachrichtigung den Filterwert enthält. Im folgenden Beispiel überprüft der Filter, true ob die Abonnementbenachrichtigung ein seats Feld enthält, dessen Array-Wert den Wert enthält. 10

Mögliche Werttypen: Integer, Float, String

{ "fieldName" : "seats", "operator" : "contains", "value" : 10 }

In einem anderen Beispiel überprüft der Filter, true ob die Abonnementbenachrichtigung ein event Feld mit einer launch Teilzeichenfolge enthält.

{ "fieldName" : "event", "operator" : "contains", "value" : "launch" }
notContains

Der notContains Operator prüft, ob eine Teilzeichenfolge, eine Teilsequenz oder ein Wert in einer Gruppe oder einem einzelnen Element fehlt. Der Filter mit dem notContains Operator ermittelt, true ob der Wert des Felds für die Abonnementbenachrichtigung den Filterwert nicht enthält. Im folgenden Beispiel überprüft der Filter, true ob die Abonnementbenachrichtigung ein seats Feld enthält, dessen Array-Wert den Wert nicht enthält. 10

Mögliche Werttypen: Integer, Float, String

{ "fieldName" : "seats", "operator" : "notContains", "value" : 10 }

In einem anderen Beispiel überprüft der Filter, true ob die Abonnementbenachrichtigung einen event Feldwert ohne launch Untersequenz enthält.

{ "fieldName" : "event", "operator" : "notContains", "value" : "launch" }
beginsWith

Der beginsWith Operator sucht nach einem Präfix in einer Zeichenfolge. Der Filter, der den beginsWith Operator enthält, bewertet, true ob der Wert des Felds für die Abonnementbenachrichtigung mit dem Wert des Filters beginnt. Im folgenden Beispiel überprüft der Filter, true ob die Abonnementbenachrichtigung ein service Feld enthält, dessen Wert mit beginnt. AWS

Möglicher Wertetyp: Zeichenfolge

{ "fieldName" : "service", "operator" : "beginsWith", "value" : "AWS" }
in

Der in Operator sucht nach passenden Elementen in einem Array. Der Filter, der den in Operator enthält, überprüft, true ob der Wert des Felds für die Abonnementbenachrichtigung in einem Array vorhanden ist. Im folgenden Beispiel bewertet der Filter, true ob die Abonnementbenachrichtigung ein severity Feld mit einem der Werte enthält, die im Array vorhanden sind:. [1,2,3]

Möglicher Wertetyp: Array mit Integer, Float oder String

{ "fieldName" : "severity", "operator" : "in", "value" : [1,2,3] }
notIn

Der notIn Operator sucht nach fehlenden Elementen in einem Array. Der Filter, der den notIn Operator enthält, gibt aus, true ob der Wert des Felds für die Abonnementbenachrichtigung nicht im Array vorhanden ist. Im folgenden Beispiel bewertet der Filter, true ob die Abonnementbenachrichtigung ein severity Feld mit einem der Werte enthält, die nicht im Array vorhanden sind:. [1,2,3]

Möglicher Wertetyp: Array mit Integer, Float oder String

{ "fieldName" : "severity", "operator" : "notIn", "value" : [1,2,3] }
between

Der between Operator sucht nach Werten zwischen zwei Zahlen oder Zeichenketten. Der Filter, der den between Operator enthält, überprüft, true ob der Wert des Felds für die Abonnementbenachrichtigung zwischen dem Wertepaar des Filters liegt. Im folgenden Beispiel überprüft der Filter, true ob die Abonnementbenachrichtigung ein severity Feld mit den Werten2,, 3 enthält. 4

Mögliche Werttypen: Paar aus Ganzzahl, Gleitkommazahl oder Zeichenfolge

{ "fieldName" : "severity", "operator" : "between", "value" : [1,5] }
containsAny

Der containsAny Operator sucht nach gemeinsamen Elementen in Arrays. Ein Filter mit dem containsAny Operator überprüft, true ob der Schnittpunkt zwischen dem eingestellten Wert des Felds für die Abonnementbenachrichtigung und dem eingestellten Wert des Filters nicht leer ist. Im folgenden Beispiel überprüft der Filter, true ob die Abonnementbenachrichtigung ein seats Feld mit einem Array-Wert enthält, der entweder oder 10 enthält. 15 Das bedeutet, dass der Filter auswerten würde, true ob die Abonnementbenachrichtigung den seats Feldwert [10,11] oder [15,20,30] hat.

Mögliche Werttypen: Integer, Float oder String

{ "fieldName" : "seats", "operator" : "containsAny", "value" : [10, 15] }

ANDLogik

Sie können mehrere Filter mithilfe von AND Logik kombinieren, indem Sie mehrere Einträge innerhalb des filters Objekts im filterGroup Array definieren. Im folgenden Beispiel ermitteln Filter, true ob die Abonnementbenachrichtigung ein userId Feld mit einem Wert enthält, 1 AND der group dem Feldwert entweder Admin oder entsprichtDeveloper.

{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }

ODER-Logik

Sie können mehrere Filter mithilfe der OR-Logik kombinieren, indem Sie mehrere Filterobjekte innerhalb des filterGroup Arrays definieren. Im folgenden Beispiel werten Filter aus, true ob die Abonnementbenachrichtigung ein userId Feld mit einem Wert enthält, der 1 ODER einem group Feldwert von entweder Admin oder entsprichtDeveloper.

{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }

Ausnahmen

Beachten Sie, dass es mehrere Einschränkungen für die Verwendung von Filtern gibt:

  • Im filters Objekt können maximal fünf eindeutige fieldName Elemente pro Filter vorhanden sein. Das bedeutet, dass Sie maximal fünf einzelne fieldName Objekte mithilfe von AND Logik kombinieren können.

  • Für den containsAny Operator können maximal zwanzig Werte angegeben werden.

  • Für die notIn Operatoren in und können maximal fünf Werte angegeben werden.

  • Jede Zeichenfolge kann maximal 256 Zeichen lang sein.

  • Bei jedem Zeichenkettenvergleich wird zwischen Groß- und Kleinschreibung unterschieden.

  • Die Filterung verschachtelter Objekte ermöglicht bis zu fünf verschachtelte Filterebenen.

  • Jede filterGroup kann maximal 10 haben. filters Das bedeutet, dass Sie maximal 10 filters mithilfe der ODER-Logik kombinieren können.

    • Der in Operator ist ein Sonderfall der OR-Logik. Im folgenden Beispiel gibt es zweifilters:

      { "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }

      Die vorherige Filtergruppe wird wie folgt ausgewertet und auf die maximale Filtergrenze angerechnet:

      { "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "eq", "value" : "Admin" } ] }, { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "eq", "value" : "Developer" } ] } ] }

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

    $extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })