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
extensions
enthä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 einenapiCacheEntriesDeleted
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 gelten
true
. Das Argument istfilterJsonObject
(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 istfilterJsonObject
(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 demfieldName
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; }