

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Estensioni
<a name="extensions-js"></a>

`extensions`contiene una serie di metodi per eseguire azioni aggiuntive all'interno dei resolver.

## Estensioni di memorizzazione nella cache
<a name="caching-extensions-js-list"></a>

**`extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, any>) : Object`**  
Rimuove un elemento dalla cache lato server. AWS AppSync Il primo argomento è il nome del tipo. Il secondo argomento è il nome del campo. Il terzo argomento è un oggetto contenente elementi della coppia chiave-valore che specificano il valore della chiave di memorizzazione nella cache. È necessario inserire gli elementi nell'oggetto nello stesso ordine delle chiavi di memorizzazione nella cache del resolver memorizzato nella cache. `cachingKey` [Per ulteriori informazioni sulla memorizzazione nella cache, vedete Comportamento della memorizzazione nella cache.](https://docs.aws.amazon.com/appsync/latest/devguide/enabling-caching.html#caching-behavior)  
**Esempio 1:**  
Questo esempio rimuove gli elementi che sono stati memorizzati nella cache di un resolver chiamato `Query.allClasses` su cui è stata utilizzata una chiave di memorizzazione nella cache chiamata. `context.arguments.semester` Quando viene chiamata la mutazione e il resolver viene eseguito, se una voce viene cancellata con successo, la risposta contiene un `apiCacheEntriesDeleted` valore nell'oggetto extensions che mostra quante voci sono state eliminate.  

```
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;
}
```
Questa funzione funziona **solo** per le mutazioni, non per le interrogazioni.

## Estensioni di abbonamento
<a name="subscription-extensions-js-list"></a>

**`extensions.setSubscriptionFilter(filterJsonObject)`**  
Definisce filtri di abbonamento avanzati. Ogni evento di notifica di sottoscrizione viene valutato sulla base dei filtri di sottoscrizione forniti e invia notifiche ai clienti se tutti i filtri lo confermano. `true` L'argomento è `filterJsonObject` (ulteriori informazioni su questo argomento sono disponibili di seguito nella filterJsonObject sezione *Argomento:*). Vedi [Filtraggio avanzato degli abbonamenti.](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html)  
È possibile utilizzare questa funzione di estensione solo nel gestore delle risposte di un resolver di sottoscrizioni. Inoltre, ti consigliamo di utilizzarla `util.transform.toSubscriptionFilter` per creare il tuo filtro.

**`extensions.setSubscriptionInvalidationFilter(filterJsonObject)`**  
Definisce i filtri di invalidazione dell'abbonamento. I filtri di sottoscrizione vengono valutati in base al payload di invalidazione, quindi invalidano un determinato abbonamento se i filtri restituiscono lo stesso risultato. `true` *L'argomento è `filterJsonObject` (ulteriori informazioni su questo argomento sono disponibili più avanti nella sezione Argomento:). filterJsonObject* Vedi [Filtraggio avanzato degli abbonamenti.](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html)  
È possibile utilizzare questa funzione di estensione solo nel gestore delle risposte di un resolver di sottoscrizioni. Inoltre, ti consigliamo di utilizzarla `util.transform.toSubscriptionFilter` per creare il tuo filtro.

**`extensions.invalidateSubscriptions(invalidationJsonObject)`**  
Utilizzato per avviare l'invalidazione dell'abbonamento a seguito di una mutazione. L'argomento è `invalidationJsonObject` (ulteriori informazioni su questo argomento sono disponibili di seguito nella sezione *Argomento: invalidationJsonObject*).  
Questa estensione può essere utilizzata solo nei modelli di mappatura delle risposte dei risolutori di mutazioni.  
È possibile utilizzare al massimo cinque chiamate di `extensions.invalidateSubscriptions()` metodo uniche in ogni singola richiesta. Se superi questo limite, riceverai un errore GraphQL.

## Argomento: filterJsonObject
<a name="extensions-filterJsonObject-js"></a>

L'oggetto JSON definisce i filtri di sottoscrizione o di invalidazione. È una serie di filtri in un. `filterGroup` Ogni filtro è una raccolta di filtri individuali.

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

Ogni filtro ha tre attributi: 
+ `fieldName`— Il campo dello schema GraphQL.
+ `operator`— Il tipo di operatore.
+ `value`— I valori da confrontare con il `fieldName` valore di notifica dell'abbonamento.

Di seguito è riportato un esempio di assegnazione di questi attributi:

```
{
 "fieldName" : "severity",
 "operator" : "le",
 "value" : context.result.severity
}
```

## Argomento: invalidationJsonObject
<a name="extensions-invalidationJsonObject-js"></a>

`invalidationJsonObject`Definisce quanto segue:
+ `subscriptionField`— L'abbonamento allo schema GraphQL da invalidare. Un singolo abbonamento, definito come una stringa in`subscriptionField`, viene considerato invalidato.
+ `payload`— Un elenco di coppie chiave-valore che viene utilizzato come input per invalidare le sottoscrizioni se il filtro di invalidazione valuta in base ai relativi valori. `true`

  L'esempio seguente invalida i client sottoscritti e connessi che utilizzano l'abbonamento quando il filtro di invalidazione definito nel resolver di `onUserDelete` sottoscrizione restituisce un risultato conforme al valore. `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;
  }
  ```