‫Instruktur: Selanjutnya, mari kita bicara tentang validator khusus.
‫Jadi terkadang validator bawaan tidak cukup.
‫Dan dalam
‫hal ini, kami juga dapat membuat validator khusus kami sendiri.
‫Dan validator sebenarnya hanyalah fungsi sederhana yang
‫harus mengembalikan benar atau salah.
‫Dan jika mengembalikan false, maka itu berarti ada kesalahan.
‫Dan sebaliknya ketika kita mengembalikan
‫true, maka validasinya
‫benar dan inputnya bisa diterima.
‫Oke, jadi sekarang mari kita buat validator kustom sederhana di sini.
‫Dan yang ingin saya validasi adalah jika harga diskon sebenarnya
‫lebih rendah dari harga itu sendiri.
‫Itu adalah sesuatu yang tidak
‫dapat kami lakukan dengan menggunakan validator
‫bawaan, jadi kami hanya akan membuatnya sendiri.
‫Sekarang kita perlu menentukan di sini
‫sebuah objek untuk opsi SchemaType.
‫Baik.
‫Jadi tipenya adalah angka, dan
‫kemudian untuk menentukan validator kami, kami
‫menggunakan properti validasi.
‫Validasi, dan kemudian seperti yang saya katakan,
‫fungsi panggilan balik sederhana.
‫Dan sekali lagi, bukan fungsi panah,
‫tetapi fungsi nyata, karena
‫dalam fungsi
‫ini kita akan memiliki akses ke variabel ini,
‫yang akan menunjuk ke dokumen saat ini.
‫Sekarang jika Anda tidak memerlukan variabel ini, maka
‫Anda tentu saja dapat menggunakan fungsi panah.
‫Kami memiliki fungsi
‫panggilan balik, dan fungsi panggilan balik itu sebenarnya
‫memiliki akses ke nilai yang dimasukkan.
‫Jadi dalam hal ini, harga diskon yang ditentukan pengguna.
‫Jadi itulah yang saya sebut nilai, singkatnya val.
‫Ingat bahwa kita perlu mengembalikan
‫true atau false dari validator ini.
‫Kapan kita ingin mengembalikan
‫false, dan kapan kita ingin mengembalikan true?
‫Nah, kita ingin error ketika harga diskon lebih
‫besar atau sama dengan harga.
‫Jadi pada dasarnya yang ingin kami
‫kembalikan di sini adalah pengujian pengujian jika
‫nilainya kurang dari ini. harga.
‫Baiklah, jadi katakanlah diskon harga adalah 100
‫dan harga sebenarnya adalah 200.
‫100 kurang dari 200, benar dan jadi kami tidak memiliki kesalahan.
‫Dan itu masuk akal karena itulah yang kami inginkan.
‫Diskon harga harus selalu lebih rendah.
‫Di sisi lain, jika diskonnya adalah 250, maka
‫ini ternyata salah.
‫Dan kemudian salah, ingat, akan memicu kesalahan validasi.
‫Sekarang mari kita uji sebenarnya.
‫Harga (keyboard clacking) dan potongan
‫harga.
‫Dan mari kita gunakan nilai yang kita
‫gunakan sebelumnya dan saya juga perlu mengubah namanya di sini.
‫Oke, jadi sekarang diskon kami lebih besar dari harga dan jadi kami
‫harus mendapatkan kesalahan kami.
‫Oke dan memang, kami memiliki kesalahan validasi.
‫Jadi gagal untuk potongan harga jalur.
‫Sekarang, kami tidak memiliki pesan khusus di sini dan jadi
‫mari kita perbaiki dengan cepat.
‫Baiklah dan cara kami melakukannya dengan cara yang sangat mirip
‫seperti yang kami lakukan dengan enum.
‫Jadi kita perlu benar-benar menentukan objek lain dan
‫kemudian mengatur properti pesan.
‫Validasi
‫harus berupa objek dan
‫kemudian kami memiliki pesan kami di sana
‫dan fungsi ini di sini akan
‫tinggal di properti yang disebut validator.
‫Oke dan pesan kami di
‫sini akan (keyboard clacking) harga diskon
‫harus
‫di
‫bawah harga biasa.
‫Di sini kita membutuhkan koma dan sekarang kita baik-baik saja.
‫Dan sebenarnya, satu trik yang sangat bagus adalah pesan ini di
‫sini juga memiliki akses ke nilainya.
‫Dan ini bekerja dengan cara yang aneh dan
‫ini benar-benar internal untuk Mongoose, jadi ini
‫tidak ada hubungannya dengan
‫JavaScript jadi saya cukup menggunakan kurung kurawal di sini dan kemudian nilai.
‫Jadi bagian ini di sini akan mendapatkan
‫akses ke nilai yang dimasukkan,
‫sehingga memiliki nilai yang sama persis dengan variabel val ini.
‫Jadi mari kita
‫uji lagi dan sekarang memang kita
‫mendapatkan pesan kita dan bahkan akses ke harga 250 yang kita tentukan di sini.
‫Sekarang mari kita ubah ke 100 dan sekarang seharusnya
‫berhasil dan ya, berhasil.
‫Sangat bagus.
‫Sekarang ada satu peringatan yang sangat penting yang
‫perlu kita perhatikan di sini
‫dan itu adalah bahwa di dalam fungsi validator,
‫bahwa kata kunci ini hanya akan menunjuk
‫ke dokumen
‫saat ini ketika kita membuat dokumen baru.
‫Jadi fungsi ini di sini tidak akan berfungsi pada pembaruan.
‫Dan itu sangat penting untuk diperhatikan.
‫Anda lihat, bahwa di Mongoose, ada beberapa
‫peringatan yang benar-benar perlu Anda
‫perhatikan saat bekerja dengannya.
‫Dan saya mempelajari semua ini dari pengalaman
‫dan itulah mengapa sekarang saya dapat menceritakannya kepada Anda.
‫Jadi saya mengalami kesalahan sekali dengan yang ini dan
‫sejak saat itu,
‫saya tahu bahwa saya hanya dapat menggunakan validator semacam
‫ini dengan kata kunci this di
‫sana ketika saya benar-benar membuat dokumen baru.
‫Jadi izinkan saya menuliskannya di sini untuk Anda.
‫(keyboard clacking) Baiklah, jadi
‫saya harap Anda memperhatikan semua
‫informasi kecil yang sangat penting
‫ini.
‫Hal yang sama di bawah sini.
‫Ingat bahwa di mana saya
‫memberi tahu Anda bahwa MIDDLEWARE DOKUMEN ini hanya benar-benar berjalan untuk
‫menyimpan dan membuat tetapi tidak untuk pembaruan.
‫Dan itulah salah satu dari hal-hal
‫lain yang sangat penting untuk tidak pernah dilupakan.
‫Sekarang dalam kasus
‫khusus di sini, sebenarnya ada cara untuk memperbaikinya
‫tetapi sangat rumit dan tidak layak untuk dilakukan.
‫Dan tentu saja kita juga dapat menulis fungsi
‫validator yang tidak bergantung pada variabel this.
‫Jadi dalam hal ini, kita hanya membutuhkannya
‫karena kita membandingkan satu nilai dengan nilai bidang lain.
‫Ini adalah validator khusus yang dapat kami gunakan di
‫Mongoose dan kami benar-benar menulisnya sendiri.
‫Tetapi juga, ada beberapa perpustakaan di npm
‫untuk validasi data yang bisa kita pasang di
‫sini sebagai validator khusus yang tidak harus kita tulis sendiri.
‫Dan perpustakaan paling populer disebut validator, jadi
‫mari kita lihat yang itu.
‫Validator dan kemudian saya mencari GitHub
‫karena biasanya semua perpustakaan ini selalu ada di GitHub.
‫Dan dokumentasinya juga akan ada di
‫sana dan di sini
‫Anda melihat
‫bahwa validator adalah perpustakaan string validator dan pembersih.
‫Anda juga melihat bahwa itu cukup populer dengan 13.00
‫bintang dan
‫itu sangat bagus.
‫Kami juga melihat perpustakaan ini hanya
‫memvalidasi dan membersihkan string.
‫Inilah semua hal tentang bagaimana kami menginstalnya
‫dan bagaimana kami menggunakannya, tetapi itu agak sederhana.
‫Kita sudah tahu itu.
‫Tetapi yang ingin saya tunjukkan
‫kepada Anda adalah daftar semua validator yang tersedia.
‫Misalnya, kami memiliki isAlpha, yang
‫akan memeriksa apakah string hanya berisi huruf.
‫Kami memiliki Alfanumerik jadi hanya huruf dan angka dan kami benar-benar
‫memiliki banyak hal di sini.
‫Jadi periksa apakah string adalah
‫boolian, atau periksa apakah string adalah kartu kredit,
‫jadi nomor kartu kredit yang valid.
‫Atau jika itu mata uang
‫atau Anda benar-benar melihat semua jenis tes yang berbeda.
‫Misalnya ISBN, jadi untuk nomor buku cek.
‫Untuk menguji apakah itu bilangan bulat atau apakah string itu huruf kecil.
‫Jadi Anda lihat, kapan pun Anda memerlukan validasi data, Anda
‫dapat mengambil salah satu perpustakaan
‫ini dan cukup menghubungkannya ke validator Mongoose Anda.
‫Sekarang banyak hal yang
‫ada di sini sebenarnya sudah dibangun
‫ke dalam Mongoose dan jadi kita tidak membutuhkan
‫semuanya, oke, tapi ada satu
‫yang sangat spesifik, yang ingin saya gunakan, yaituAlpha.
‫Jadi saya ingin memeriksa apakah nama tur hanya berisi huruf.
‫Dan untuk itu saya dapat menggunakan
‫fungsi ini dari perpustakaan validator.
‫Mari kembali dan mulai dengan menginstal
‫validator npm
‫i (keyboard clacking).
‫Itu berhasil.
‫Kemudian saya perlu mengimpornya
‫di sini dan sekarang kita siap untuk benar-benar menggunakannya di sini.
‫Saya akan menggunakannya
‫di sini dan lagi, saya menggunakan properti
‫validasi dan sekarang yang
‫perlu saya lakukan hanyalah memasang fungsi di sini.
‫Dan di validator, cara kerjanya seperti ini, di
‫mana validator adalah objek dan
‫di sana kita memiliki semua metode ini.
‫Validator adalah
‫Alpha,
‫jadi
‫itu yang kita
‫pilih dari dokumentasi.
‫Dan itu sebenarnya.
‫Jadi kami tidak menyebutnya di sini.
‫Kami pada dasarnya hanya menentukan
‫bahwa ini adalah fungsi yang harus digunakan.
‫Sama seperti milik kita sendiri, seperti validator kita sendiri, kita
‫tidak menyebutnya.
‫Kami hanya menempatkan fungsi panggilan balik ini
‫di sini yang
‫akan dipanggil segera setelah data harus divalidasi.
‫Dan di sini, itu sama.
‫Sekarang, jika kita ingin menentukan pesan kesalahan,
‫itu berfungsi seperti di sini.
‫Kita dapat menentukan array dan kemudian pesan kesalahan setelah
‫fungsi panggilan balik.
‫Dan kita bisa melakukannya di sini.
‫Jadi di sini kami melakukannya secara berbeda.
‫Di sini kita kemudian membuat objek baru
‫ini dengan validator di sana dan pesannya, tapi
‫kita bisa melakukannya dengan array juga,
‫tapi itu akan terlihat aneh.
‫Tapi di sini, karena fungsinya sangat kecil, jadi
‫ini sangat kecil, kita bisa meletakkannya di sini
‫dan kemudian sebagai argumen kedua dalam array,
‫tambahkan pesan kesalahan.
‫Nama tur hanya
‫boleh berisi (keyboard clacking) karakter.
‫Bagus, periksa itu.
‫Kembali di Tukang Pos di sini, mari singkirkan diskon harga kami.
‫Dan mari kita tambahkan beberapa nomor di sini.
‫Dan itu harus gagal
‫dalam tes dan memang, namanya hanya boleh berisi karakter.
‫Mari kita singkirkan itu.
‫Kami juga tidak bisa menggunakan nama ini.
‫Kami sudah menggunakannya sebelumnya,
‫sehingga dapat ditulis juga di sini dengan karakter
‫dan kami masih mendapatkan kesalahan ini di sini.
‫Yah, itu mungkin karena spasi.
‫Jadi mari kita singkirkan spasi,
‫yang tentu saja tidak akan berguna dan
‫memang, sekarang berhasil.
‫Jadi masalahnya adalah ruang, tapi
‫jelas kami ingin menjaga ruang di sini.
‫Sebenarnya, kesalahan validasi ini tidak terlalu berguna, jadi
‫saya akan menghilangkannya.
‫Pertimbangkan bahwa ini di sini hanya untuk menunjukkan
‫bahwa kita dapat menggunakan perpustakaan eksternal seperti
‫ini untuk melakukan validasi.
‫Dan sebenarnya, kami masih akan menggunakan perpustakaan
‫ini nanti ketika kami memeriksa apakah email pengguna benar-benar valid.
‫Jadi itu fungsi bagus
‫lain yang disertakan dalam perpustakaan ini.
‫Jadi sekali lagi, ini adalah cara kerjanya.
‫Tidak terlalu berguna dalam kasus
‫ini, jadi jika kita
‫benar-benar ingin menguji apakah string hanya berisi huruf dan spasi,
‫mungkin akan
‫lebih mudah menggunakan ekspresi reguler untuk
‫menguji pola semacam itu.
‫Tapi saya tidak
‫akan melakukannya di sini karena kuliah ini
‫lebih banyak tentang validator khusus ini.
‫Oya, dengan kuliah ini, kita sekarang sudah
‫siap dengan pengenalan luwak.
‫Sekarang seperti yang dapat Anda bayangkan, tentu
‫masih banyak yang harus dipelajari tentang luwak
‫dan faktanya, kami memiliki bagian luwak tingkat lanjut sedikit kemudian
‫dalam kursus dan
‫tentu saja juga di bagian lain,
‫Anda akan terus belajar lebih
‫banyak tentang luwak. cara menggunakan
‫luwak dengan cara yang benar-benar profesional.
‫Anda telah belajar banyak sampai saat
‫ini, selamat yang sangat besar untuk mencapai sejauh ini dan
‫senang melihat Anda masih bersama saya di sini.
‫Pekerjaan yang sangat bagus dan saya berharap dapat melihat Anda segera.