Ekstensi - AWS AppSync

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. 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 Argumennya filterJsonObject 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 Argumennya filterJsonObject 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 dengan fieldName 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.

eq (equal)

eqOperator mengevaluasi true apakah nilai bidang notifikasi langganan cocok dan benar-benar sama dengan nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki service bidang dengan nilai yang setara AWS AppSync dengan.

Jenis nilai yang mungkin: integer, float, string, Boolean

{ "fieldName" : "service", "operator" : "eq", "value" : "AWS AppSync" }
ne (not equal)

neOperator mengevaluasi true apakah nilai bidang notifikasi langganan berbeda dari nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki service bidang dengan nilai yang berbeda dariAWS AppSync.

Jenis nilai yang mungkin: integer, float, string, Boolean

{ "fieldName" : "service", "operator" : "ne", "value" : "AWS AppSync" }
le (less or equal)

leOperator mengevaluasi true apakah nilai bidang notifikasi langganan kurang dari atau sama dengan nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki size bidang dengan nilai kurang dari atau sama dengan5.

Jenis nilai yang mungkin: integer, float, string

{ "fieldName" : "size", "operator" : "le", "value" : 5 }
lt (less than)

ltOperator mengevaluasi true apakah nilai bidang notifikasi langganan lebih rendah dari nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki size bidang dengan nilai lebih rendah dari5.

Jenis nilai yang mungkin: integer, float, string

{ "fieldName" : "size", "operator" : "lt", "value" : 5 }
ge (greater or equal)

geOperator mengevaluasi true apakah nilai bidang notifikasi langganan lebih besar dari atau sama dengan nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki size bidang dengan nilai lebih besar dari atau sama dengan5.

Jenis nilai yang mungkin: integer, float, string

{ "fieldName" : "size", "operator" : "ge", "value" : 5 }
gt (greater than)

gtOperator mengevaluasi true apakah nilai bidang notifikasi langganan lebih besar dari nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki size bidang dengan nilai lebih besar dari5.

Jenis nilai yang mungkin: integer, float, string

{ "fieldName" : "size", "operator" : "gt", "value" : 5 }
contains

containsOperator memeriksa substring, urutan, atau nilai dalam satu set atau item tunggal. Filter dengan contains operator mengevaluasi true apakah nilai bidang notifikasi langganan berisi nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki seats bidang dengan nilai array yang berisi nilai10.

Jenis nilai yang mungkin: integer, float, string

{ "fieldName" : "seats", "operator" : "contains", "value" : 10 }

Dalam contoh lain, filter mengevaluasi true apakah notifikasi langganan memiliki event bidang dengan launch substring.

{ "fieldName" : "event", "operator" : "contains", "value" : "launch" }
notContains

notContainsOperator memeriksa tidak adanya substring, urutan, atau nilai dalam satu set atau item tunggal. Filter dengan notContains operator mengevaluasi true jika nilai bidang notifikasi langganan tidak berisi nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki seats bidang dengan nilai array yang tidak mengandung nilai10.

Jenis nilai yang mungkin: integer, float, string

{ "fieldName" : "seats", "operator" : "notContains", "value" : 10 }

Dalam contoh lain, filter mengevaluasi true apakah pemberitahuan langganan memiliki nilai event bidang tanpa launch sebagai urutannya.

{ "fieldName" : "event", "operator" : "notContains", "value" : "launch" }
beginsWith

beginsWithOperator memeriksa awalan dalam string. Filter yang berisi beginsWith operator mengevaluasi true apakah nilai bidang notifikasi langganan dimulai dengan nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki service bidang dengan nilai yang dimulai denganAWS.

Jenis nilai yang mungkin: string

{ "fieldName" : "service", "operator" : "beginsWith", "value" : "AWS" }
in

inOperator memeriksa elemen yang cocok dalam array. Filter yang berisi in operator mengevaluasi true apakah nilai bidang notifikasi langganan ada dalam larik. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki severity bidang dengan salah satu nilai yang ada dalam array:[1,2,3].

Jenis nilai yang mungkin: Array integer, float, atau string

{ "fieldName" : "severity", "operator" : "in", "value" : [1,2,3] }
notIn

notInOperator memeriksa elemen yang hilang dalam array. Filter yang berisi notIn operator mengevaluasi true jika nilai bidang notifikasi langganan tidak ada dalam larik. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki severity bidang dengan salah satu nilai yang tidak ada dalam array:[1,2,3].

Jenis nilai yang mungkin: Array integer, float, atau string

{ "fieldName" : "severity", "operator" : "notIn", "value" : [1,2,3] }
between

betweenOperator memeriksa nilai antara dua angka atau string. Filter yang berisi between operator mengevaluasi true apakah nilai bidang notifikasi langganan berada di antara pasangan nilai filter. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki severity bidang dengan nilai2,3,4.

Jenis nilai yang mungkin: Sepasang integer, float, atau string

{ "fieldName" : "severity", "operator" : "between", "value" : [1,5] }
containsAny

containsAnyOperator memeriksa elemen umum dalam array. Filter dengan containsAny operator mengevaluasi true apakah persimpangan bidang notifikasi langganan menetapkan nilai dan nilai set filter tidak kosong. Dalam contoh berikut, filter mengevaluasi true apakah pemberitahuan langganan memiliki seats bidang dengan nilai array yang berisi salah satu 10 atau15. Ini berarti bahwa filter akan mengevaluasi true apakah pemberitahuan langganan memiliki nilai seats bidang [10,11] atau[15,20,30].

Jenis nilai yang mungkin: integer, float, atau string

{ "fieldName" : "seats", "operator" : "containsAny", "value" : [10, 15] }

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 lima fieldName item unik per filter. Ini berarti Anda dapat menggabungkan maksimal lima fieldName objek individu menggunakan AND logika.

  • Bisa ada maksimum dua puluh nilai untuk containsAny operator.

  • Bisa ada maksimal lima nilai untuk in dan notIn 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 10 filters menggunakan 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. 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" } })