

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
<a name="extensions-js"></a>

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

## Erweiterungen zwischenspeichern
<a name="caching-extensions-js-list"></a>

**`extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, any>) : 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.](https://docs.aws.amazon.com/appsync/latest/devguide/enabling-caching.html#caching-behavior)  
**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;
}
```
Diese Funktion funktioniert **nur** für Mutationen, nicht für Abfragen.

## Abonnement-Erweiterungen
<a name="subscription-extensions-js-list"></a>

**`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 ist `filterJsonObject` (Weitere Informationen zu diesem Argument finden Sie weiter unten im filterJsonObject Abschnitt *Argument:*.). Siehe [Verbesserte Abonnementfilterung](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html).  
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](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html).  
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:*.).  
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
<a name="extensions-filterJsonObject-js"></a>

Das JSON-Objekt definiert entweder Abonnement- oder Invalidierungsfilter. Es ist eine Reihe von Filtern in einem`filterGroup`. 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
<a name="extensions-invalidationJsonObject-js"></a>

Das `invalidationJsonObject` definiert Folgendes:
+ `subscriptionField`— Das GraphQL-Schemaabonnement, das ungültig werden soll. Ein einzelnes Abonnement, das als Zeichenfolge in der definiert ist`subscriptionField`, 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;
  }
  ```