View a markdown version of this page

Estensioni - AWS AppSync GraphQL

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

extensionscontiene una serie di metodi per eseguire azioni aggiuntive all'interno dei resolver.

extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, any>) : Object

Elimina 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 di 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 dei resolver memorizzati nella cache. cachingKey Per ulteriori informazioni sulla memorizzazione nella cache, vedere Comportamento 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 per un resolver chiamato Query.allClasses sul quale è 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 correttamente, 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; }
Nota

Questa funzione funziona solo per le mutazioni, non per le query.

extensions.setSubscriptionFilter(filterJsonObject)

Definisce filtri di abbonamento avanzati. Ogni evento di notifica dell'abbonamento viene valutato in base ai filtri di abbonamento forniti e invia notifiche ai client se tutti i filtri lo consentonotrue. L'argomento è filterJsonObject (ulteriori informazioni su questo argomento sono disponibili di seguito nella JsonObject sezione Argomento: filtro). Vedi Filtraggio avanzato delle sottoscrizioni.

Nota

È possibile utilizzare questa funzione di estensione solo nel gestore delle risposte di un risolutore di sottoscrizioni. Inoltre, ti consigliamo di util.transform.toSubscriptionFilter utilizzarlo per creare il filtro.

extensions.setSubscriptionInvalidationFilter(filterJsonObject)

Definisce i filtri di invalidazione dell'abbonamento. I filtri di abbonamento vengono valutati in base al payload di invalidazione, quindi invalidano un determinato abbonamento se i filtri danno esito positivo. true L'argomento è filterJsonObject (ulteriori informazioni su questo argomento sono disponibili di seguito nella sezione Argomento: filtro). JsonObject Vedi Filtraggio avanzato delle sottoscrizioni.

Nota

È possibile utilizzare questa funzione di estensione solo nel gestore delle risposte di un risolutore di sottoscrizioni. Inoltre, ti consigliamo di util.transform.toSubscriptionFilter utilizzarlo per creare il filtro.

extensions.invalidateSubscriptions(invalidationJsonObject)

Utilizzato per avviare l'annullamento di un abbonamento a seguito di una mutazione. L'argomento è invalidationJsonObject (Ulteriori informazioni su questo argomento sono disponibili di seguito nella sezione Argomento: JsonObject invalidazione.).

Nota

Questa estensione può essere utilizzata solo nei modelli di mappatura delle risposte dei risolutori di mutazioni.

È possibile utilizzare solo un massimo di cinque chiamate di extensions.invalidateSubscriptions() metodo univoche in una singola richiesta. Se superi questo limite, riceverai un errore GraphQL.

Argomento: filtro JsonObject

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

{ "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: invalidazione JsonObject

invalidationJsonObjectDefinisce quanto segue:

  • subscriptionField— La sottoscrizione allo schema GraphQL da invalidare. Una singola sottoscrizione, definita come una stringa insubscriptionField, viene considerata invalidata.

  • payload— Un elenco di coppie chiave-valore utilizzato come input per invalidare le sottoscrizioni se il filtro di invalidazione viene valutato in base ai relativi valori. true

    L'esempio seguente invalida i client abbonati e connessi che utilizzano l'abbonamento quando il filtro di invalidazione definito nel risolutore di onUserDelete sottoscrizioni restituisce il risultato in base 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; }