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.
$extensions
berisi 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.
cachingKey
catatan
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.
true
ArgumennyafilterJsonObject
seperti 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.
true
ArgumennyafilterJsonObject
seperti 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
invalidationJsonObject
seperti 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
JSONObjek 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 denganfieldName
nilai 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 |
notContains | Memeriksa tidak adanya urutan atau tidak adanya nilai dalam himpunan. | bilangan bulat, mengambang, string |
beginsWith | Memeriksa awalan. | string |
in | Memeriksa elemen pencocokan yang ada dalam daftar. | Array integer, float, atau string |
notIn | Memeriksa elemen pencocokan yang tidak ada dalam daftar. | Array integer, float, atau string |
antara | Antara dua nilai | bilangan bulat, mengambang, string |
containsAny | Berisi elemen umum | bilangan bulat, mengambang, string |
Tabel berikut menjelaskan bagaimana setiap operator digunakan dalam pemberitahuan berlangganan.
ANDlogika
Anda dapat menggabungkan beberapa filter menggunakan AND logika 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 1
AND dengan 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
filters
objek, bisa ada maksimal limafieldName
item unik per filter. Ini berarti Anda dapat menggabungkan maksimal limafieldName
objek individu menggunakan AND logika. -
Bisa ada maksimum dua puluh nilai untuk
containsAny
operator. -
Bisa ada maksimal lima nilai untuk
in
dannotIn
operator. -
Setiap string dapat maksimal 256 karakter.
-
Setiap perbandingan string peka huruf besar/kecil.
-
Pemfilteran objek bersarang memungkinkan hingga lima tingkat penyaringan bersarang.
-
Masing-masing
filterGroup
dapat memiliki maksimal 10filters
. Ini berarti Anda dapat menggabungkan maksimal 10filters
menggunakan logika OR.-
in
Operator 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
invalidationJsonObject
Mendefinisikan 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.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
$extensions.invalidateSubscriptions({ "subscriptionField": "onUserDelete", "payload": { "group": "Developer" "type" : "Full-Time" } })