Estensioni - AWS AppSync

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

Nota

Ora supportiamo principalmente il runtime APPSYNC_JS e la relativa documentazione. Prendi in considerazione l'utilizzo del runtime APPSYNC_JS e delle relative guide qui.

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

$ estensioni. evictFromApiCache (stringa, stringa, oggetto): oggetto

Rimuove un elemento dalla cache lato AWS AppSync server. 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

Nota

Questa utilità funziona solo per le mutazioni, non per le interrogazioni.

$ estensioni. 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 descritto di seguito.

Nota

È possibile utilizzare questo metodo di estensione solo nei modelli di mappatura delle risposte di un resolver di sottoscrizioni.

$ estensioni. setSubscriptionInvalidationFiltro () 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 descritto di seguito.

Nota

È possibile utilizzare questo metodo di estensione solo nei modelli di mappatura delle risposte di un resolver di sottoscrizioni.

Argomento: filterJsonObject

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 }

Campo: FieldName

Il tipo di stringa fieldName si riferisce a un campo definito nello schema GraphQL che corrisponde al fieldName payload di notifica della sottoscrizione. Quando viene trovata una corrispondenza, il value campo dello schema GraphQL viene confrontato con quello del filtro di notifica value della sottoscrizione. Nell'esempio seguente, il fieldName filtro corrisponde al service campo definito in un determinato tipo GraphQL. Se il payload di notifica contiene un service campo con un value equivalente aAWS AppSync, il filtro restituisce: true

{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }

Campo: valore

Il valore può essere di tipo diverso in base all'operatore:

  • Un numero singolo o booleano

    • Esempi di stringhe:, "test" "service"

    • Esempi di numeri:1,2, 45.75

    • Esempi booleani:, true false

  • Coppie di numeri o stringhe

    • Esempio di coppia di stringhe:["test1","test2"], ["start","end"]

    • Esempio di coppia numerica:[1,4],[67,89], [12.45, 95.45]

  • Matrici di numeri o stringhe

    • Esempio di array di stringhe: ["test1","test2","test3","test4","test5"]

    • Esempio di array numerico:[1,2,3,4,5], [12.11,46.13,45.09,12.54,13.89]

Campo: operatore

Una stringa con distinzione tra maiuscole e minuscole con i seguenti valori possibili:

Operatore Descrizione Tipi di valori possibili
eq Equal integer, float, string, Boolean
ne Not equal integer, float, string, Boolean
le Less than or equal integer, float, string
lt Less than integer, float, string
ge Greater than or equal integer, float, string
gt Greater than integer, float, string
contains Checks for a subsequence or value in the set. integer, float, string
notContains Checks for the absence of a subsequence or absence of a value in the set. integer, float, string
beginsWith Checks for a prefix. string
in Checks for matching elements that are in the list. Array of integer, float, or string
notIn Checks for matching elements that aren't in the list. Array of integer, float, or string
between Between two values integer, float, string
containsAny Contains common elements integer, float, string

La tabella seguente descrive come ogni operatore viene utilizzato nella notifica di sottoscrizione.

eq (equal)

L'eqoperatore valuta true se il valore del campo di notifica della sottoscrizione corrisponde ed è strettamente uguale al valore del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione ha un service campo con il valore equivalente a. AWS AppSync

Tipi di valori possibili: integer, float, string, boolean

{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }
ne (not equal)

L'neoperatore valuta true se il valore del campo di notifica della sottoscrizione è diverso dal valore del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione ha un service campo con un valore diverso da. AWS AppSync

Tipi di valori possibili: integer, float, string, boolean

{ "fieldName" : "service", "operator" : "ne", "value" : "AWS AppSync" }
le (less or equal)

L'leoperatore valuta true se il valore del campo di notifica della sottoscrizione è inferiore o uguale al valore del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione contiene un size campo con un valore minore o uguale a. 5

Tipi di valori possibili: integer, float, string

{ "fieldName" : "size", "operator" : "le", "value" : 5 }
lt (less than)

L'ltoperatore valuta true se il valore del campo di notifica della sottoscrizione è inferiore al valore del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione contiene un size campo con un valore inferiore a. 5

Tipi di valori possibili: integer, float, string

{ "fieldName" : "size", "operator" : "lt", "value" : 5 }
ge (greater or equal)

L'geoperatore valuta true se il valore del campo di notifica della sottoscrizione è maggiore o uguale al valore del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione contiene un size campo con un valore maggiore o uguale a. 5

Tipi di valori possibili: integer, float, string

{ "fieldName" : "size", "operator" : "ge", "value" : 5 }
gt (greater than)

L'gtoperatore valuta true se il valore del campo di notifica della sottoscrizione è maggiore del valore del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione contiene un size campo con un valore maggiore di. 5

Tipi di valori possibili: integer, float, string

{ "fieldName" : "size", "operator" : "gt", "value" : 5 }
contains

L'containsoperatore verifica la presenza di una sottostringa, di una sottosequenza o di un valore in un set o in un singolo elemento. Un filtro con l'containsoperatore valuta true se il valore del campo di notifica della sottoscrizione contiene il valore del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione contiene un seats campo con il valore dell'array che contiene il valore. 10

Tipi di valori possibili: integer, float, string

{ "fieldName" : "seats", "operator" : "contains", "value" : 10 }

In un altro esempio, il filtro valuta true se la notifica di sottoscrizione ha un event campo con launch come sottostringa.

{ "fieldName" : "event", "operator" : "contains", "value" : "launch" }
notContains

L'notContainsoperatore verifica l'assenza di una sottostringa, di una sottosequenza o di un valore in un set o in un singolo elemento. Il filtro con l'notContainsoperatore determina true se il valore del campo di notifica della sottoscrizione non contiene il valore del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione ha un seats campo il cui valore dell'array non contiene il valore. 10

Tipi di valori possibili: integer, float, string

{ "fieldName" : "seats", "operator" : "notContains", "value" : 10 }

In un altro esempio, il filtro valuta true se la notifica di sottoscrizione ha un valore di event campo senza launch come sottofondo.

{ "fieldName" : "event", "operator" : "notContains", "value" : "launch" }
beginsWith

L'beginsWithoperatore verifica la presenza di un prefisso in una stringa. Il filtro contenente l'beginsWithoperatore valuta true se il valore del campo di notifica della sottoscrizione inizia con il valore del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione contiene un service campo con un valore che inizia con. AWS

Tipo di valore possibile: stringa

{ "fieldName" : "service", "operator" : "beginsWith", "value" : "AWS" }
in

L'inoperatore verifica la presenza di elementi corrispondenti in un array. Il filtro contenente l'inoperatore valuta true se il valore del campo di notifica della sottoscrizione esiste in un array. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione ha un severity campo con uno dei valori presenti nell'array:. [1,2,3]

Tipo di valore possibile: Array of integer, float o string

{ "fieldName" : "severity", "operator" : "in", "value" : [1,2,3] }
notIn

L'notInoperatore verifica la presenza di elementi mancanti in un array. Il filtro contenente l'notInoperatore valuta true se il valore del campo di notifica della sottoscrizione non esiste nell'array. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione ha un severity campo con uno dei valori non presenti nell'array:. [1,2,3]

Tipo di valore possibile: Array di numeri interi, float o string

{ "fieldName" : "severity", "operator" : "notIn", "value" : [1,2,3] }
between

L'betweenoperatore verifica la presenza di valori compresi tra due numeri o stringhe. Il filtro contenente l'betweenoperatore valuta true se il valore del campo di notifica della sottoscrizione è compreso tra la coppia di valori del filtro. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione ha un severity campo con valori2,,3. 4

Tipi di valori possibili: coppia di numeri interi, float o string

{ "fieldName" : "severity", "operator" : "between", "value" : [1,5] }
containsAny

L'containsAnyoperatore verifica la presenza di elementi comuni negli array. Un filtro con l'containsAnyoperatore valuta true se l'intersezione tra il valore del set del campo di notifica della sottoscrizione e il valore del set di filtri non è vuota. Nell'esempio seguente, il filtro valuta true se la notifica di sottoscrizione contiene un seats campo con un valore di matrice contenente o. 10 15 Ciò significa che il filtro valuterebbe true se la notifica di sottoscrizione avesse un valore di seats campo pari [10,11] o[15,20,30].

Tipi di valori possibili: integer, float o string

{ "fieldName" : "seats", "operator" : "contains", "value" : [10, 15] }

Logica AND

È possibile combinare più filtri utilizzando la logica AND definendo più voci all'interno dell'filtersoggetto dell'filterGrouparray. Nell'esempio seguente, i filtri valutano true se la notifica di sottoscrizione ha un userId campo con un valore equivalente a 1 AND un valore di group campo pari Admin o uguale aDeveloper.

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

Logica OR

È possibile combinare più filtri utilizzando la logica OR definendo più oggetti di filtro all'interno dell'filterGrouparray. Nell'esempio seguente, i filtri valutano true se la notifica di sottoscrizione ha un userId campo con un valore equivalente a 1 OR un valore di group campo uguale a Admin oDeveloper.

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

Eccezioni

Tieni presente che esistono diverse restrizioni per l'utilizzo dei filtri:

  • Nell'filtersoggetto, possono esserci un massimo di cinque fieldName elementi unici per filtro. Ciò significa che è possibile combinare un massimo di cinque fieldName oggetti singoli utilizzando la logica AND.

  • L'containsAnyoperatore può disporre di un massimo di venti valori.

  • Possono esserci un massimo di cinque valori per gli notIn operatori in and.

  • Ogni stringa può contenere un massimo di 256 caratteri.

  • Ogni confronto tra stringhe distingue tra maiuscole e minuscole.

  • Il filtraggio degli oggetti annidati consente fino a cinque livelli di filtraggio annidati.

  • Ciascuno filterGroup può avere un massimo di 10. filters Ciò significa che è possibile combinarne un massimo di 10 filters utilizzando la logica OR.

    • L'inoperatore è un caso speciale della logica OR. Nell'esempio seguente, ce ne sono duefilters:

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

      Il gruppo di filtri precedente viene valutato come segue e conta ai fini del limite massimo di filtri:

      { "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" } ] } ] }

$extensions.invalidateSubscriptions () invalidationJsonObject

Utilizzato per avviare l'invalidazione dell'abbonamento a seguito di una mutazione. L'argomento è descritto di invalidationJsonObject seguito.

Nota

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: invalidationJsonObject

invalidationJsonObjectDefinisce quanto segue:

  • subscriptionField— L'abbonamento allo schema GraphQL da invalidare. Un singolo abbonamento, definito come una stringa insubscriptionField, 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

    $extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })