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 APPSYNC_JS-Laufzeit und ihre Dokumentation. 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.
cachingKeyAnmerkung
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 gelten
true. Das Argument wirdfilterJsonObjectim 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.
trueDas Argument wird imfilterJsonObjectfolgenden 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 wird
invalidationJsonObjectim 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 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 }
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 value GraphQL-Schemafeld 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:,
truefalse
-
-
Zahlen- oder Zeichenkettenpaare
-
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 Wertetypen |
|---|---|---|
| eq | Gleich | Ganzzahl, Gleitkommazahl, Zeichenfolge, Boolean |
| Eins | 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 | Prüft, ob eine Teilsequenz oder ein Wert in der Menge vorhanden ist. | Ganzzahl, Fließkommazahl, Zeichenfolge |
| Nicht enthält | Prüft, ob eine Teilsequenz oder ein Wert in der Menge fehlt. | Ganzzahl, Fließkommazahl, Zeichenfolge |
| Beginnt mit | Sucht nach einem Präfix. | Zeichenfolge |
| in | Prüft auf übereinstimmende Elemente 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 |
| Enthält Beliebig | Enthält gemeinsame Elemente | Ganzzahl, Fließkommazahl, Zeichenfolge |
In der folgenden Tabelle wird beschrieben, wie die einzelnen Operatoren in der Abonnementbenachrichtigung verwendet werden.
UND-Logik
Sie können mehrere Filter mithilfe der UND-Logik kombinieren, indem Sie mehrere Einträge innerhalb des filters Objekts im filterGroup Array definieren. Im folgenden Beispiel werten Filter aus, true ob die Abonnementbenachrichtigung ein userId Feld mit einem Wert enthält, der 1 AND 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
filtersObjekt können maximal fünf eindeutigefieldNameElemente pro Filter vorhanden sein. Das bedeutet, dass Sie maximal fünf einzelnefieldNameObjekte mithilfe der UND-Logik kombinieren können. -
Für den
containsAnyOperator können maximal zwanzig Werte angegeben werden. -
Für die
notInOperatoreninund 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
filterGroupkann maximal 10 haben.filtersDas bedeutet, dass Sie maximal 10filtersmithilfe der ODER-Logik kombinieren können.-
Der
inOperator 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.trueIm folgenden Beispiel werden abonnierte und verbundene Clients, die das Abonnement verwenden, ungültig gemacht, wenn der im
onUserDeleteAbonnement-Resolver definierte Invalidierungsfilter das Ergebnis anhand des Werts auswertet.truepayload$extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })