

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

# Ekstensi
<a name="extensions-js"></a>

`extensions`berisi serangkaian metode untuk membuat tindakan tambahan dalam resolver Anda.

## Ekstensi caching
<a name="caching-extensions-js-list"></a>

**`extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, any>) : Object`**  
Mengusir item dari cache sisi AWS AppSync server. Argumen pertama adalah nama tipe. Argumen kedua adalah nama bidang. Argumen ketiga adalah objek yang berisi item pasangan kunci-nilai yang menentukan nilai kunci caching. Anda harus meletakkan item dalam objek dalam urutan yang sama dengan kunci caching di resolver cache. `cachingKey` Untuk informasi selengkapnya tentang caching, lihat [Perilaku cache](https://docs.aws.amazon.com/appsync/latest/devguide/enabling-caching.html#caching-behavior).  
**Contoh 1:**  
Contoh ini mengusir item yang di-cache untuk resolver yang dipanggil `Query.allClasses` di mana kunci caching dipanggil digunakan. `context.arguments.semester` Ketika mutasi dipanggil dan resolver berjalan, jika entri berhasil dihapus, maka respons berisi `apiCacheEntriesDeleted` nilai dalam objek ekstensi yang menunjukkan berapa banyak entri yang dihapus.  

```
import { util, extensions } from '@aws-appsync/utils';

export const request = (ctx) => ({ payload: null });

export function response(ctx) {
	extensions.evictFromApiCache('Query', 'allClasses', {
		'context.arguments.semester': ctx.args.semester,
	});
	return null;
}
```
Fungsi ini **hanya** berfungsi untuk mutasi, bukan kueri.

## Ekstensi berlangganan
<a name="subscription-extensions-js-list"></a>

**`extensions.setSubscriptionFilter(filterJsonObject)`**  
Mendefinisikan filter langganan yang disempurnakan. Setiap acara pemberitahuan langganan dievaluasi terhadap filter langganan yang disediakan dan mengirimkan pemberitahuan kepada klien jika semua filter mengevaluasi. `true` Argumennya adalah `filterJsonObject` (Informasi lebih lanjut tentang argumen ini dapat ditemukan di bawah di filterJsonObject bagian *Argumen:*.). Lihat [Pemfilteran langganan yang disempurnakan](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html).  
Anda dapat menggunakan fungsi ekstensi ini hanya di handler respons dari resolver langganan. Juga, kami sarankan menggunakan `util.transform.toSubscriptionFilter` untuk membuat filter Anda.

**`extensions.setSubscriptionInvalidationFilter(filterJsonObject)`**  
Mendefinisikan filter pembatalan langganan. Filter langganan dievaluasi terhadap muatan pembatalan, lalu membatalkan langganan yang diberikan jika filter mengevaluasi. `true` Argumennya adalah `filterJsonObject` (Informasi lebih lanjut tentang argumen ini dapat ditemukan di bawah di filterJsonObject bagian *Argumen:*.). Lihat [Pemfilteran langganan yang disempurnakan](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html).  
Anda dapat menggunakan fungsi ekstensi ini hanya di handler respons dari resolver langganan. Juga, kami sarankan menggunakan `util.transform.toSubscriptionFilter` untuk membuat filter Anda.

**`extensions.invalidateSubscriptions(invalidationJsonObject)`**  
Digunakan untuk memulai pembatalan langganan dari mutasi. Argumennya adalah `invalidationJsonObject` (Informasi lebih lanjut tentang argumen ini dapat ditemukan di bawah di invalidationJsonObject bagian *Argumen:*.).  
Ekstensi ini hanya dapat digunakan dalam template pemetaan respons dari resolver mutasi.  
Anda hanya dapat menggunakan paling banyak lima panggilan `extensions.invalidateSubscriptions()` metode unik dalam satu permintaan. Jika Anda melebihi batas ini, Anda akan menerima kesalahan GraphQL.

## Argumen: filterJsonObject
<a name="extensions-filterJsonObject-js"></a>

Objek JSON mendefinisikan filter langganan atau pembatalan. Ini adalah array filter dalam a`filterGroup`. Setiap filter adalah kumpulan filter individual.

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

Setiap filter memiliki tiga atribut: 
+ `fieldName`- Bidang skema GraphQL.
+ `operator`— Jenis operator.
+ `value`— Nilai untuk dibandingkan dengan `fieldName` nilai notifikasi langganan.

Berikut ini adalah contoh penugasan atribut ini:

```
{
 "fieldName" : "severity",
 "operator" : "le",
 "value" : context.result.severity
}
```

## Argumen: invalidationJsonObject
<a name="extensions-invalidationJsonObject-js"></a>

`invalidationJsonObject`Mendefinisikan sebagai berikut:
+ `subscriptionField`— Langganan skema GraphQL untuk membatalkan. Langganan tunggal, didefinisikan sebagai string di`subscriptionField`, dianggap untuk pembatalan.
+ `payload`— Daftar pasangan kunci-nilai yang digunakan sebagai input untuk membatalkan langganan jika filter pembatalan mengevaluasi terhadap nilainya. `true`

  Contoh berikut membatalkan klien yang berlangganan dan terhubung menggunakan `onUserDelete` langganan saat filter pembatalan yang ditentukan dalam resolver langganan mengevaluasi terhadap nilainya. `true` `payload`

  ```
  export const request = (ctx) => ({ payload: null });
  
  export function response(ctx) {
  	extensions.invalidateSubscriptions({
  		subscriptionField: 'onUserDelete',
  		payload: { group: 'Developer', type: 'Full-Time' },
  	});
  	return ctx.result;
  }
  ```