

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à.

# Aiutanti di trasformazione in \$1util.transform
<a name="transformation-helpers-in-utils-transform"></a>

**Nota**  
Ora supportiamo principalmente il runtime APPSYNC\$1JS e la relativa documentazione. [Prendi in considerazione l'utilizzo del runtime APPSYNC\$1JS e delle relative guide qui.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.transform`contiene metodi di supporto che semplificano l'esecuzione di operazioni complesse su fonti di dati, come le operazioni di filtro di Amazon DynamoDB.

## aiutanti per la trasformazione
<a name="transformation-helpers-conversions"></a>

### Elenco di utilità degli aiutanti di trasformazione
<a name="transformation-helpers-in-utils-transform-list"></a>

****`$util.transform.toDynamoDBFilterExpression(Map) : Map`****  
Converte una stringa di input in un'espressione di filtro da utilizzare con DynamoDB.  

```
Input:

$util.transform.toDynamoDBFilterExpression({
    "title":{
      "contains":"Hello World"
    }
  })

Output:

{
    "expression" : "contains(#title, :title_contains)"
    "expressionNames" : {
        "#title" : "title",
    },
    "expressionValues" : {
        ":title_contains" : { "S" : "Hello World" }
    },
}
```

****`$util.transform.toElasticsearchQueryDSL(Map) : Map`****  
Converte l'input specificato nella sua espressione OpenSearch Query DSL equivalente, restituendola come stringa JSON.  

```
Input:

$util.transform.toElasticsearchQueryDSL({
    "upvotes":{
        "ne":15,
        "range":[
            10,
            20
        ]
    },
    "title":{
        "eq":"hihihi",
        "wildcard":"h*i"
    }
  })

Output:
{
    "bool":{
      "must":[
          {
            "bool":{
              "must":[
                  {
                    "bool":{
                      "must_not":{
                        "term":{
                          "upvotes":15
                        }
                      }
                    }
                  },
                  {
                    "range":{
                      "upvotes":{
                        "gte":10,
                        "lte":20
                      }
                    }
                  }
              ]
            }
          },
          {
            "bool":{
              "must":[
                  {
                    "term":{
                      "title":"hihihi"
                    }
                  },
                  {
                  "wildcard":{
                      "title":"h*i"
                    }
                  }
              ]
            }
          }
      ]
    }
}
```
Si presume che l'operatore predefinito sia AND.

## Transformation Helpers, filtri di sottoscrizione
<a name="transformation-helpers-conversions-subscription-filters"></a>

### Elenco delle utilità dei filtri di sottoscrizione di Transformation Helpers
<a name="transformation-helpers-in-utils-transform-list"></a>

****`$util.transform.toSubscriptionFilter(Map) : Map`****  
Converte un oggetto `Map` di input in un `SubscriptionFilter` oggetto espressione. Il `$util.transform.toSubscriptionFilter` metodo viene utilizzato come input per l'`$extensions.setSubscriptionFilter()`estensione. Per ulteriori informazioni, consulta [Estensioni](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).

****`$util.transform.toSubscriptionFilter(Map, List) : Map`****  
Converte un oggetto `Map` di input in un oggetto `SubscriptionFilter` espressione. Il `$util.transform.toSubscriptionFilter` metodo viene utilizzato come input per l'`$extensions.setSubscriptionFilter()`estensione. Per ulteriori informazioni, consulta [Estensioni](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).  
Il primo argomento è l'oggetto `Map` di input che viene convertito nell'oggetto `SubscriptionFilter` espressione. Il secondo argomento riguarda i nomi `List` di campo che vengono ignorati nel primo oggetto `Map` di input durante la costruzione dell'oggetto `SubscriptionFilter` espressione.

****`$util.transform.toSubscriptionFilter(Map, List, Map) : Map`****  
Converte un oggetto `Map` di input in un `SubscriptionFilter` oggetto espressione. Il `$util.transform.toSubscriptionFilter` metodo viene utilizzato come input per l'`$extensions.setSubscriptionFilter()`estensione. Per ulteriori informazioni, consulta [Estensioni](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).   
Il primo argomento è l'oggetto di `Map` input che viene convertito nell'oggetto `SubscriptionFilter` espressione, il secondo argomento riguarda i nomi `List` di campo che verranno ignorati nel primo oggetto di `Map` input e il terzo argomento è un oggetto di `Map` input con regole rigorose che viene incluso durante la costruzione dell'oggetto `SubscriptionFilter` espressione. Queste regole rigorose sono incluse nell'oggetto `SubscriptionFilter` espressione in modo tale che almeno una delle regole venga soddisfatta per passare il filtro di sottoscrizione.

## Argomenti del filtro di iscrizione
<a name="subscription-filter-arguments"></a>

La tabella seguente spiega come vengono definiti gli argomenti delle seguenti utilità:
+ `$util.transform.toSubscriptionFilter(Map) : Map`
+ `$util.transform.toSubscriptionFilter(Map, List) : Map`
+ `$util.transform.toSubscriptionFilter(Map, List, Map) : Map`

------
#### [ Argument 1: Map ]

L'argomento 1 è un `Map` oggetto con i seguenti valori chiave:
+ nomi di campo
+ «e»
+ «o»

Per i nomi di campo utilizzati come chiavi, le condizioni relative alle voci di questi campi sono nel formato di. `"operator" : "value"` 

L'esempio seguente mostra come aggiungere voci a: `Map`

```
"field_name" : {
                    "operator1" : value             
               }

## We can have multiple conditions for the same field_name: 

"field_name" : {
                    "operator1" : value             
                    "operator2" : value
                    .
                    .
                    .                  
               }
```

Quando un campo contiene due o più condizioni, si considera che tutte queste condizioni utilizzino l'operazione OR.

L'input `Map` può anche avere «e» e «or» come chiavi, il che implica che tutte le voci al suo interno devono essere unite utilizzando la logica AND o OR a seconda della chiave. I valori chiave «and» e «or» prevedono una serie di condizioni.

```
"and" : [
            
            {
                "field_name1" : {
                    "operator1" : value             
                }
             },
             
             {
                "field_name2" : {
                    "operator1" : value             
                }
             },
             .
             .
        ].
```

Nota che puoi annidare «and» e «or». Cioè, puoi aver annidato «e» /"or» all'interno di un altro blocco «e» /"or». Tuttavia, questo non funziona per campi semplici.

```
"and" : [
            
            {
                "field_name1" : {
                    "operator" : value             
                }
             },
             
             {
                "or" : [
                            {
                                "field_name2" : {
                                    "operator" : value             
                                }
                            },
                            
                            {
                                "field_name3" : {
                                    "operator" : value             
                                }
                            }
              
                        ].
```

L'esempio seguente mostra un input dell'*argomento 1* utilizzando`$util.transform.toSubscriptionFilter(Map) : Map`.

**Ingresso/i**

Argomento 1: Mappa:

```
{
  "percentageUp": {
    "lte": 50,
    "gte": 20
  },
  "and": [
    {
      "title": {
        "ne": "Book1"
      }
    },
    {
      "downvotes": {
        "gt": 2000
      }
    }
  ],
  "or": [
    {
      "author": {
        "eq": "Admin"
      }
    },
    {
      "isPublished": {
        "eq": false
      }
    }
  ]
}
```

**Output**

Il risultato è un `Map` oggetto:

```
{
  "filterGroup": [
    {
      "filters": [
        {
          "fieldName": "percentageUp",
          "operator": "lte",
          "value": 50
        },
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 2000
        },
        {
          "fieldName": "author",
          "operator": "eq",
          "value": "Admin"
        }
      ]
    },
    {
      "filters": [
        {
          "fieldName": "percentageUp",
          "operator": "lte",
          "value": 50
        },
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 2000
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        }
      ]
    },
    {
      "filters": [
        {
          "fieldName": "percentageUp",
          "operator": "gte",
          "value": 20
        },
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 2000
        },
        {
          "fieldName": "author",
          "operator": "eq",
          "value": "Admin"
        }
      ]
    },
    {
      "filters": [
        {
          "fieldName": "percentageUp",
          "operator": "gte",
          "value": 20
        },
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 2000
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        }
      ]
    }
  ]
}
```

------
#### [ Argument 2: List ]

L'argomento 2 contiene una `List` serie di nomi di campo che non devono essere considerati nell'input `Map` (argomento 1) durante la costruzione dell'oggetto `SubscriptionFilter` espressione. `List`Possono anche essere vuoti.

L'esempio seguente mostra gli input dell'argomento 1 e dell'argomento 2 utilizzando`$util.transform.toSubscriptionFilter(Map, List) : Map`.

**Ingresso/i**

Argomento 1: Mappa:

```
{

  "percentageUp": {
    "lte": 50,
    "gte": 20
  },
  "and": [
    {
      "title": {
        "ne": "Book1"
      }
    },
    {
      "downvotes": {
        "gt": 20
      }
    }
  ],
  "or": [
    {
      "author": {
        "eq": "Admin"
      }
    },
    {
      "isPublished": {
        "eq": false
      }
    }
  ]
}
```

Argomento 2: Elenco:

```
["percentageUp", "author"]
```

**Output**

Il risultato è un `Map` oggetto:

```
{
  "filterGroup": [
    {
      "filters": [
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 20
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        }
      ]
    }
  ]
}
```

------
#### [ Argument 3: Map ]

L'argomento 3 è un `Map` oggetto che ha nomi di campo come valori chiave (non può avere «and» o «or»). Per i nomi di campo come chiavi, le condizioni in questi campi sono voci nel formato di`"operator" : "value"`. A differenza dell'argomento 1, l'argomento 3 non può avere più condizioni nella stessa chiave. Inoltre, l'argomento 3 non contiene una clausola «and» o «or», quindi non è prevista nemmeno la nidificazione.

L'argomento 3 rappresenta un elenco di regole rigorose, che vengono aggiunte all'oggetto `SubscriptionFilter` espressione in modo che venga soddisfatta **almeno una** di queste condizioni per passare il filtro.

```
{
  "fieldname1": {
    "operator": value
  },
  "fieldname2": {
    "operator": value
  }
}
.
.
.
```

L'esempio seguente mostra gli input dell'*argomento 1*, dell'*argomento 2* e dell'*argomento 3* utilizzando`$util.transform.toSubscriptionFilter(Map, List, Map) : Map`.

**Ingresso/i**

Argomento 1: Mappa:

```
{
  "percentageUp": {
    "lte": 50,
    "gte": 20
  },
  "and": [
    {
      "title": {
        "ne": "Book1"
      }
    },
    {
      "downvotes": {
        "lt": 20
      }
    }
  ],
  "or": [
    {
      "author": {
        "eq": "Admin"
      }
    },
    {
      "isPublished": {
        "eq": false
      }
    }
  ]
}
```

Argomento 2: Elenco:

```
["percentageUp", "author"]
```

Argomento 3: Mappa:

```
{
  "upvotes": {
    "gte": 250
  },
  "author": {
    "eq": "Person1"
  }
}
```

**Output**

Il risultato è un `Map` oggetto:

```
{
  "filterGroup": [
    {
      "filters": [
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 20
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        },
        {
          "fieldName": "upvotes",
          "operator": "gte",
          "value": 250
        }
      ]
    },
    {
      "filters": [
        {
          "fieldName": "title",
          "operator": "ne",
          "value": "Book1"
        },
        {
          "fieldName": "downvotes",
          "operator": "gt",
          "value": 20
        },
        {
          "fieldName": "isPublished",
          "operator": "eq",
          "value": false
        },
        {
          "fieldName": "author",
          "operator": "eq",
          "value": "Person1"
        }
      ]
    }
  ]
}
```

------