

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

**catatan**  
Kami sekarang terutama mendukung runtime APPSYNC\$1JS dan dokumentasinya. [Harap pertimbangkan untuk menggunakan runtime APPSYNC\$1JS dan panduannya di sini.](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-js-version.html)

`$util.transform`berisi metode pembantu yang memudahkan untuk melakukan operasi kompleks terhadap sumber data, seperti operasi filter Amazon DynamoDB.

## Pembantu transformasi
<a name="transformation-helpers-conversions"></a>

### Daftar utilitas pembantu transformasi
<a name="transformation-helpers-in-utils-transform-list"></a>

****`$util.transform.toDynamoDBFilterExpression(Map) : Map`****  
Mengkonversi string input ke ekspresi filter untuk digunakan dengan 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`****  
Mengkonversi input yang diberikan ke ekspresi OpenSearch Query DSL yang setara, mengembalikannya sebagai string 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"
                    }
                  }
              ]
            }
          }
      ]
    }
}
```
Operator default diasumsikan AND.

## Filter berlangganan pembantu transformasi
<a name="transformation-helpers-conversions-subscription-filters"></a>

### Pembantu transformasi berlangganan menyaring daftar utils
<a name="transformation-helpers-in-utils-transform-list"></a>

****`$util.transform.toSubscriptionFilter(Map) : Map`****  
Mengkonversi objek `Map` input ke objek `SubscriptionFilter` ekspresi. `$util.transform.toSubscriptionFilter`Metode ini digunakan sebagai masukan ke `$extensions.setSubscriptionFilter()` ekstensi. Untuk informasi selengkapnya, lihat [Ekstensi](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).

****`$util.transform.toSubscriptionFilter(Map, List) : Map`****  
Mengkonversi objek `Map` input ke objek `SubscriptionFilter` ekspresi. `$util.transform.toSubscriptionFilter`Metode ini digunakan sebagai masukan ke `$extensions.setSubscriptionFilter()` ekstensi. Untuk informasi selengkapnya, lihat [Ekstensi](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).  
Argumen pertama adalah objek `Map` masukan yang dikonversi ke objek `SubscriptionFilter` ekspresi. Argumen kedua adalah nama `List` bidang yang diabaikan dalam objek `Map` masukan pertama saat membangun objek `SubscriptionFilter` ekspresi.

****`$util.transform.toSubscriptionFilter(Map, List, Map) : Map`****  
Mengkonversi objek `Map` input ke objek `SubscriptionFilter` ekspresi. `$util.transform.toSubscriptionFilter`Metode ini digunakan sebagai masukan ke `$extensions.setSubscriptionFilter()` ekstensi. Untuk informasi selengkapnya, lihat [Ekstensi](https://docs.aws.amazon.com/appsync/latest/devguide/extensions).   
Argumen pertama adalah objek `Map` masukan yang dikonversi ke objek `SubscriptionFilter` ekspresi, argumen kedua adalah nama `List` bidang yang akan diabaikan dalam objek `Map` masukan pertama, dan argumen ketiga adalah objek `Map` masukan dari aturan ketat yang disertakan saat membangun objek `SubscriptionFilter` ekspresi. Aturan ketat ini disertakan dalam objek `SubscriptionFilter` ekspresi sedemikian rupa sehingga setidaknya salah satu aturan akan dipenuhi untuk melewati filter berlangganan.

## Argumen filter langganan
<a name="subscription-filter-arguments"></a>

Tabel berikut menjelaskan bagaimana argumen utilitas berikut didefinisikan:
+ `$util.transform.toSubscriptionFilter(Map) : Map`
+ `$util.transform.toSubscriptionFilter(Map, List) : Map`
+ `$util.transform.toSubscriptionFilter(Map, List, Map) : Map`

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

Argumen 1 adalah `Map` objek dengan nilai-nilai kunci berikut:
+ nama bidang
+ “dan”
+ “atau”

Untuk nama bidang sebagai kunci, kondisi pada entri bidang ini adalah dalam bentuk. `"operator" : "value"` 

Contoh berikut menunjukkan bagaimana entri dapat ditambahkan ke`Map`:

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

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

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

Ketika sebuah bidang memiliki dua atau lebih kondisi di atasnya, semua kondisi ini dianggap menggunakan operasi OR.

Input juga `Map` dapat memiliki “dan” dan “atau” sebagai kunci, menyiratkan bahwa semua entri di dalamnya harus digabungkan menggunakan logika AND atau OR tergantung pada kuncinya. Nilai kunci “dan” dan “atau” mengharapkan berbagai kondisi.

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

Perhatikan bahwa Anda dapat bersarang “dan” dan “atau”. Artinya, Anda dapat memiliki sarang “dan” /"atau” di dalam blok “dan” /"atau” lainnya. Namun, ini tidak berfungsi untuk bidang sederhana.

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

Contoh berikut menunjukkan masukan *argumen 1* menggunakan`$util.transform.toSubscriptionFilter(Map) : Map`.

**Masukan**

Argumen 1: Peta:

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

**Keluaran**

Hasilnya adalah `Map` objek:

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

Argumen 2 berisi nama `List` bidang yang tidak boleh dipertimbangkan dalam input `Map` (argumen 1) saat membangun objek `SubscriptionFilter` ekspresi. `List`Bisa juga kosong.

Contoh berikut menunjukkan masukan argumen 1 dan argumen 2 menggunakan`$util.transform.toSubscriptionFilter(Map, List) : Map`.

**Masukan**

Argumen 1: Peta:

```
{

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

Argumen 2: Daftar:

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

**Keluaran**

Hasilnya adalah `Map` objek:

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

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

Argumen 3 adalah `Map` objek yang memiliki nama bidang sebagai nilai kunci (tidak dapat memiliki “dan” atau “atau”). Untuk nama bidang sebagai kunci, kondisi pada bidang ini adalah entri dalam bentuk. `"operator" : "value"` Tidak seperti argumen 1, argumen 3 tidak dapat memiliki beberapa kondisi dalam kunci yang sama. Selain itu, argumen 3 tidak memiliki klausa “dan” atau “atau”, jadi tidak ada sarang yang terlibat juga.

Argumen 3 merupakan daftar aturan ketat, yang ditambahkan ke objek `SubscriptionFilter` ekspresi sehingga **setidaknya satu** dari kondisi ini terpenuhi untuk melewati filter.

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

Contoh berikut menunjukkan masukan dari *argumen 1*, *argumen 2*, dan *argumen 3* menggunakan`$util.transform.toSubscriptionFilter(Map, List, Map) : Map`.

**Masukan**

Argumen 1: Peta:

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

Argumen 2: Daftar:

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

Argumen 3: Peta:

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

**Keluaran**

Hasilnya adalah `Map` objek:

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

------