

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

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

`util.transform`berisi metode pembantu yang membuatnya lebih mudah untuk melakukan operasi kompleks terhadap sumber data.

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

**`util.transform.toDynamoDBFilterExpression(filterObject: DynamoDBFilterObject) : string`**  
Mengkonversi string input ke ekspresi filter untuk digunakan dengan DynamoDB. Kami merekomendasikan penggunaan `toDynamoDBFilterExpression` dengan [fungsi modul bawaan](https://docs.aws.amazon.com/appsync/latest/devguide/built-in-modules-js.html).

**`util.transform.toElasticsearchQueryDSL(object: OpenSearchQueryObject) : string`**  
Mengkonversi input yang diberikan ke ekspresi OpenSearch Query DSL yang setara, mengembalikannya sebagai string JSON.  
**Contoh masukan:**  

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

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

**`util.transform.toSubscriptionFilter(objFilter, ignoredFields?, rules?): SubscriptionFilter`**  
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-js.html).  
Parameter dan pernyataan pengembalian tercantum di bawah ini:  
*Parameter*  
+ `objFilter`: `SubscriptionFilterObject`

  Objek `Map` masukan yang dikonversi ke objek `SubscriptionFilter` ekspresi.
+ `ignoredFields`: `SubscriptionFilterExcludeKeysType` (opsional)

  Sebuah `List` nama bidang di objek pertama yang akan diabaikan.
+ `rules`: `SubscriptionFilterRuleObject` (opsional)

  Objek `Map` masukan dengan aturan ketat yang disertakan saat Anda membangun objek `SubscriptionFilter` ekspresi. Aturan ketat ini akan dimasukkan dalam objek `SubscriptionFilter` ekspresi sehingga setidaknya salah satu aturan akan dipenuhi untuk melewati filter berlangganan.
*Respons*  
Mengembalikan `[SubscriptionFilter](https://docs.aws.amazon.com/appsync/latest/devguide/extensions-js.html)`.

**`util.transform.toSubscriptionFilter(Map, List)`**  
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-js.html).  
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)`**  
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-js.html). 

**`util.transform.toDynamoDBConditionExpression(conditionObject)`**  
Menciptakan ekspresi kondisi DynamoDB.

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

Tabel berikut menjelaskan bagaimana argumen utilitas berikut didefinisikan:
+ `Util.transform.toSubscriptionFilter(objFilter, ignoredFields?, rules?): SubscriptionFilter`

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

------