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.
$extensions
contiene 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 ilfieldName
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.
Logica AND
È possibile combinare più filtri utilizzando la logica AND definendo più voci all'interno dell'filters
oggetto dell'filterGroup
array. 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'filterGroup
array. 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'
filters
oggetto, possono esserci un massimo di cinquefieldName
elementi unici per filtro. Ciò significa che è possibile combinare un massimo di cinquefieldName
oggetti singoli utilizzando la logica AND. -
L'
containsAny
operatore può disporre di un massimo di venti valori. -
Possono esserci un massimo di cinque valori per gli
notIn
operatoriin
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 10filters
utilizzando la logica OR.-
L'
in
operatore è 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
invalidationJsonObject
Definisce 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" } })