‫Narator: Selamat datang di video terakhir dari bagian ini.
‫Dan dalam
‫hal ini, kita akan mencegah
‫polusi parameter, menggunakan paket NPM lainnya.
‫Tetapi sebelum menginstal paket itu, mari
‫kita lihat kesalahannya.
‫Tetapi sebelum melakukan itu, mari kita menuju ke Postman
‫dan melihat mengapa
‫kita sebenarnya perlu mencegah polusi parameter di tempat pertama.
‫Jadi, pertama-tama, kita harus login.
‫Oke, jadi, dengan pengguna ini dan kata sandi ini.
‫Jadi sekarang kita bisa menggunakan rute Get All Tours.
‫Baiklah, jadi yang akan saya lakukan
‫sekarang di sini adalah menambahkan beberapa parameter ke string kueri.
‫Jadi mari kita lihat, saya ingin mengurutkan berdasarkan durasi,
‫dan pada saat yang sama, saya juga ingin mengurutkan berdasarkan harga.
‫Dan itu sebenarnya tidak masuk akal
‫karena kami siap hanya memiliki satu parameter pengurutan.
‫Jadi mari kita lihat apa yang sebenarnya kita dapatkan dengan ini.
‫Dan memang kami mendapatkan kesalahan yang mengatakan bahwa ini. string kueri. menyortir. pemisahan bukan fungsi.
‫Dan itulah yang terjadi di apiFeatures. js di baris 23.
‫Jadi mari kita buka itu dan di sini, pada baris 23 adalah
‫di mana kesalahan itu terjadi.
‫Jadi itu mencoba untuk membagi properti sort di sini,
‫yang kami harapkan menjadi string.
‫Tapi sekarang karena kita mendefinisikannya dua
‫kali, jadi urutkan sekali lalu urutkan dua kali, express
‫sebenarnya akan membuat array dengan dua nilai ini, durasi dan harga.
‫Biarkan saya benar-benar menunjukkan itu kepada Anda.
‫Menghibur. catatan.
‫Sekarang saya menyalinnya.
‫Oke, coba lagi.
‫Inilah kesalahan yang sama dan
‫seperti yang saya katakan itu sebenarnya adalah array dengan durasi dan harga.
‫Dan tentu saja, kita tidak bisa membagi karena split
‫hanya bekerja pada string, oke?
‫Jadi ini adalah masalah umum yang
‫kemudian dapat dimanfaatkan oleh penyerang.
‫Baiklah, dan pada dasarnya kita sekarang
‫akan menggunakan middleware yang hanya akan menghapus
‫bidang duplikat ini, oke?
‫Dan yang itu, mari kita instal.
‫Ini disebut HPP
‫yang merupakan singkatan dari HTTP Parameter Polusi.
‫Baiklah.
‫Ayo cepat membutuhkannya disini.
‫Baiklah, jadi, ini satu lagi yang sangat sederhana.
‫Yang perlu kita lakukan hanyalah aplikasi. gunakan dan kemudian hubungi HPP.
‫Jadi, cegah polusi parameter.
‫Dan yang ini lagi harus digunakan di sini pada
‫akhirnya, oke, karena yang dilakukannya adalah
‫membersihkan string kueri, oke?
‫Jadi mari kita coba lagi.
‫Butuh sedikit waktu, dan ini dia.
‫Jadi kesalahannya hilang dan sekarang hanya
‫menggunakan yang terakhir.
‫Jadi ini mengurutkan harga saya sekarang
‫dan memang kita mulai dengan yang terendah dan
‫kemudian naik 497, sampai ke yang paling mahal
‫dari hampir 3000, oke?
‫Jadi itu agak diperbaiki tetapi kami sebenarnya menginginkan beberapa properti
‫atau bidang duplikat dalam beberapa kasus, bukan?
‫Misalnya kita mungkin ingin mencari wisata dengan
‫durasi sembilan dan lima.
‫Jadi ingat bahwa di API kita,
‫kita bisa melakukan ini, jadi durasinya sama dengan lima, dan
‫kita bisa mengatakan, pada saat yang sama, durasi sembilan, oke?
‫Dan kami ingin ini benar-benar berfungsi tetapi saat ini tidak.
‫Itu hanya menemukan tur dengan sembilan hari, kan?
‫Tetapi jika kita tidak, atau middleware HPP.
‫Jadi mari kita nonaktifkan.
‫Jadi jika kita tidak mengaktifkannya, maka kita
‫akan menemukan tiga tur, satu dengan
‫durasi lima, lalu di sini dengan durasi sembilan dan di sini satu
‫lagi dengan durasi lima.
‫Oke, dan dalam hal ini, ini
‫sebenarnya perilaku yang diharapkan.
‫Jadi apa yang dapat kita lakukan agar dapat
‫menggunakan middleware tetapi tetap mendapatkan
‫hasil yang kita harapkan di sini, dengan
‫durasi, kita dapat membuat daftar putih beberapa parameter, oke?
‫Jadi ke dalam fungsi HPP ini, kita bisa sekali
‫lagi melewati sebuah objek dan kemudian di sana, tentukan daftar putihnya, oke?
‫Dan daftar putih hanyalah sebuah larik properti yang
‫sebenarnya kami izinkan duplikatnya dalam string kueri.
‫Oke?
‫Dan untuk durasi tentu saja salah satunya, oke?
‫Jadi, mari kita coba lagi.
‫Jadi, saat ini kami masih mendapatkan tiga hasil seperti sebelumnya.
‫Tetapi jika kita mencobanya dengan sort, dan mari kita
‫buat tab baru di sini.
‫Jadi jika kita mencobanya dengan pengurutan
‫ganda ini, maka kita juga seharusnya tidak mendapatkan kesalahan.
‫Nah sekarang belum login, jadi mari kita ambil
‫token error kita disini.
‫Coba itu lagi.
‫Dan sekarang memang berfungsi, kami tidak mendapatkan kesalahan.
‫Dan agar middleware HPP melakukan tugasnya.
‫Baiklah?
‫Tutup juga yang
‫ini, dan sekarang kita juga harus menentukan beberapa
‫bidang lain di daftar putih kita, karena misalnya
‫kita ingin mencari yang ini juga, atau kuantitas peringkat.
‫Jadi mari kita salin semuanya di sini ke dalam daftar putih kita.
‫Jadi rata-rata juga.
‫Kemudian juga durasi
‫yang sudah kita miliki, dan katakanlah ukuran grup maksimal.
‫Kita mungkin juga menginginkan kesulitan.
‫Dan juga harganya.
‫Dan saya pikir itu sudah cukup.
‫Baiklah.
‫Dan mungkin
‫agak aneh untuk secara manual meletakkan semua nama bidang di sini dan nanti
‫kita mungkin harus melakukan hal yang sama untuk sumber daya
‫lainnya, dan itu akan membuat daftar putih ini lebih besar, bukan?
‫Dan tentu saja kita bisa melakukan beberapa hal rumit di
‫sini untuk mendapatkan nama bidang ini dari model
‫itu sendiri, tapi sekali lagi,
‫saya hanya ingin membuatnya sederhana di sini, oke?
‫Jadi saya hanya mendefinisikan nama bidang
‫ini secara manual di sini dan kemudian menyebutnya sehari, oke?
‫Oke, dan itu sebenarnya
‫membungkus bagian otentikasi, otorisasi, dan keamanan kami.
‫Dan jika Anda ingin bersenang-senang dengannya, tentu saja,
‫Anda dapat mencoba menerapkan beberapa hal yang saya
‫sarankan dalam video ringkasan yang saya
‫tunjukkan sebelumnya dengan slide itu dengan semua
‫langkah keamanan berbeda yang telah
‫kami terapkan dan beberapa
‫di antaranya saya suruh Anda bereksperimen.
‫Jadi jangan ragu untuk melakukannya, atau jika
‫tidak, mari kita bersama-sama beralih ke bagian berikutnya
‫yang akan menjadi bagian yang sangat menarik lagi karena kita
‫akan benar-benar mulai membuat model
‫data dan mempelajari beberapa hal MongoDB yang lebih canggih.
‫Jadi saya tidak sabar untuk melihat Anda di sana.