Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Ekstensi
catatan
Kami sekarang terutama mendukung runtime APPSYNC_JS dan dokumentasinya. Harap pertimbangkan untuk menggunakan runtime APPSYNC_JS dan panduannya di sini.
$extensionsberisi serangkaian metode untuk membuat tindakan tambahan dalam resolver Anda.
$extensions.evictFromApiCache(String, String, Object) : 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.
cachingKeycatatan
Utilitas ini hanya berfungsi untuk mutasi, bukan kueri.
$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.
trueArgumennyafilterJsonObjectseperti yang dijelaskan di bagian berikut.catatan
Anda dapat menggunakan metode ekstensi ini hanya dalam template pemetaan respons dari resolver langganan.
$extensions.setSubscriptionInvalidationFilter(filterJsonObject)-
Mendefinisikan filter pembatalan langganan. Filter langganan dievaluasi terhadap muatan pembatalan, lalu membatalkan langganan yang diberikan jika filter mengevaluasi.
trueArgumennyafilterJsonObjectseperti yang dijelaskan di bagian berikut.catatan
Anda dapat menggunakan metode ekstensi ini hanya dalam template pemetaan respons dari resolver langganan.
$extensions.invalidateSubscriptions(invalidationJsonObject)-
Digunakan untuk memulai pembatalan langganan dari mutasi. Argumennya
invalidationJsonObjectseperti yang dijelaskan di bagian berikut.catatan
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
Objek JSON mendefinisikan filter langganan atau pembatalan. Ini adalah array filter dalam afilterGroup. 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 denganfieldNamenilai notifikasi langganan.
Berikut ini adalah contoh penugasan atribut ini:
{ "fieldName" : "severity", "operator" : "le", "value" : $context.result.severity }
Bidang: fieldName
Jenis string fieldName mengacu pada bidang yang ditentukan dalam skema GraphQL yang cocok dengan payload notifikasi fieldName langganan. Ketika kecocokan ditemukan, bidang skema GraphQL dibandingkan dengan filter notifikasi value langganan. value Dalam contoh berikut, fieldName filter cocok dengan service bidang yang ditentukan dalam tipe GraphQL tertentu. Jika payload notifikasi berisi service bidang yang value setara denganAWS
AppSync, filter akan mengevaluasi: true
{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }
Bidang: nilai
Nilai dapat berupa tipe yang berbeda berdasarkan operator:
-
Nomor tunggal atau Boolean
-
Contoh string:
"test","service" -
Contoh nomor:
1,2,45.75 -
Contoh Boolean:
true,false
-
-
Pasangan angka atau string
-
Contoh pasangan string:
["test1","test2"],["start","end"] -
Contoh pasangan angka:
[1,4],[67,89],[12.45, 95.45]
-
-
Array angka atau string
-
Contoh array string:
["test1","test2","test3","test4","test5"] -
Contoh array angka:
[1,2,3,4,5],[12.11,46.13,45.09,12.54,13.89]
-
Bidang: operator
String peka huruf besar/kecil dengan nilai yang mungkin berikut:
| Operator | Deskripsi | Jenis nilai yang mungkin |
|---|---|---|
| persamaan | Sama | bilangan bulat, mengambang, string, Boolean |
| ne | Tidak sama | bilangan bulat, mengambang, string, Boolean |
| le | Kurang dari atau sama | bilangan bulat, mengambang, string |
| lt | Kurang dari | bilangan bulat, mengambang, string |
| ge | Lebih besar dari atau sama | bilangan bulat, mengambang, string |
| gt | Lebih besar dari | bilangan bulat, mengambang, string |
| mengandung | Memeriksa urutan atau nilai dalam set. | bilangan bulat, mengambang, string |
| NotBerisi | Memeriksa tidak adanya urutan atau tidak adanya nilai dalam himpunan. | bilangan bulat, mengambang, string |
| Mulailah dengan | Memeriksa awalan. | string |
| in | Memeriksa elemen pencocokan yang ada dalam daftar. | Array integer, float, atau string |
| TidakIn | Memeriksa elemen pencocokan yang tidak ada dalam daftar. | Array integer, float, atau string |
| antara | Antara dua nilai | bilangan bulat, mengambang, string |
| MengandungAny | Berisi elemen umum | bilangan bulat, mengambang, string |
Tabel berikut menjelaskan bagaimana setiap operator digunakan dalam pemberitahuan berlangganan.
Logika DAN
Anda dapat menggabungkan beberapa filter menggunakan logika AND dengan mendefinisikan beberapa entri dalam filters objek dalam array. filterGroup Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki userId bidang dengan nilai yang setara dengan 1 DAN nilai group bidang salah satu Admin atauDeveloper.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
Logika ATAU
Anda dapat menggabungkan beberapa filter menggunakan logika OR dengan mendefinisikan beberapa objek filter dalam filterGroup array. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki userId bidang dengan nilai yang setara dengan 1 ATAU nilai group bidang dari salah satu Admin atauDeveloper.
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
Pengecualian
Perhatikan bahwa ada beberapa batasan untuk menggunakan filter:
-
Dalam
filtersobjek, bisa ada maksimal limafieldNameitem unik per filter. Ini berarti Anda dapat menggabungkan maksimal limafieldNameobjek individu menggunakan logika AND. -
Bisa ada maksimum dua puluh nilai untuk
containsAnyoperator. -
Bisa ada maksimal lima nilai untuk
indannotInoperator. -
Setiap string dapat maksimal 256 karakter.
-
Setiap perbandingan string peka huruf besar/kecil.
-
Pemfilteran objek bersarang memungkinkan hingga lima tingkat penyaringan bersarang.
-
Masing-masing
filterGroupdapat memiliki maksimal 10filters. Ini berarti Anda dapat menggabungkan maksimal 10filtersmenggunakan logika OR.-
inOperator adalah kasus khusus logika OR. Dalam contoh berikut, ada duafilters:{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 }, { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }Grup filter sebelumnya dievaluasi sebagai berikut dan dihitung menuju batas filter maksimum:
{ "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" } ] } ] }
-
Argumen: invalidationJsonObject
invalidationJsonObjectMendefinisikan sebagai berikut:
-
subscriptionField— Langganan skema GraphQL untuk membatalkan. Langganan tunggal, didefinisikan sebagai string disubscriptionField, dianggap untuk pembatalan. -
payload— Daftar pasangan kunci-nilai yang digunakan sebagai input untuk membatalkan langganan jika filter pembatalan mengevaluasi terhadap nilainya.trueContoh berikut membatalkan klien yang berlangganan dan terhubung menggunakan
onUserDeletelangganan saat filter pembatalan yang ditentukan dalam resolver langganan mengevaluasi terhadap nilainya.truepayload$extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })