‫-: Jadi fitur filter
‫yang telah kami terapkan sekarang sudah berfungsi dengan baik,
‫tetapi dalam video ini kami ingin membawanya ke tingkat berikutnya
‫dengan mengizinkan beberapa kueri yang lebih kompleks.
‫Jadi saat ini pengguna hanya dapat
‫memfilter dokumen dengan menyetel satu kunci sama dengan nilai, bukan?
‫Tapi sekarang, kami sebenarnya ingin juga
‫menerapkan lebih besar dari, lebih besar atau sama
‫dari, lebih kecil dari, dan lebih kecil atau sama dari operator.
‫Jadi, alih-alih hanya
‫memiliki persamaan, kami ingin benar-benar dapat, misalnya, mengatakan
‫durasi lebih besar atau sama dengan lima,
‫dan tidak hanya sama, oke?
‫Dan itu membuat segalanya sedikit lebih rumit.
‫Sekarang, sebelum menulis kode apa pun, saya
‫akan benar-benar melakukan latihan menulis kueri
‫seperti apa tampilannya di MongoDB.
‫Jadi seperti apa sebenarnya objek filter itu?
‫Dan mari kita tulis di sini sebagai komentar,
‫dan sekali lagi, hanya sebagai latihan.
‫Jadi objeknya akan terlihat seperti ini,
‫jadi kesulitan, mulai dengan yang itu, setel ke mudah,
‫dan kemudian durasinya; dan sekarang ingat bahwa
‫ketika kita ingin menggunakan operator, kita perlu memulai objek lain.
‫Dan kemudian untuk operator yang lebih besar atau
‫sama dengan yang kita gunakan seperti ini, ke lima, kan, ingat itu?
‫Jadi beginilah cara kita menulis objek
‫filter secara manual untuk kueri yang baru saja kita tentukan.
‫Sekarang mari kita kembali ke Postman
‫sehingga saya dapat menunjukkan kepada Anda cara yang sangat
‫standar untuk menulis string kueri termasuk operator ini.
‫Dan kita melakukannya seperti ini, jadi sebelum tanda sama dengan
‫kita membuka tanda kurung dan kemudian di
‫sini kita menulis operatornya, jadi dalam hal ini
‫lebih besar dari atau sama, dan hanya itu.
‫Dan pada dasarnya seperti ini, kita menambahkan bagian
‫ketiga ke pasangan nilai kunci, jadi
‫kita memiliki kunci, nilainya, dan sekarang juga operatornya.
‫Dan kami menggunakan lagi tanda kurung
‫ini untuk menentukan operator.
‫Jadi sekali lagi, itu adalah
‫cara standar dan
‫sekarang mari kita lanjutkan dan lihat string kueri yang
‫diberikan Express kepada kita
‫dan seperti sebelumnya, mari kita log
‫kueri reg dot ke konsol, log kueri reg dot, semua Baik.
‫Jadi mari kita lihat seperti apa objek
‫kueri kita saat kita
‫menentukan string kueri seperti ini.
‫Baiklah, sekarang hal pertama yang Anda perhatikan adalah bahwa
‫kami mendapatkan kesalahan di sini,
‫tapi jangan khawatir tentang itu untuk saat ini.
‫Jadi yang saya minati di sini, adalah objek ini, jadi izinkan
‫saya melanjutkan dan menyalinnya di sini.
‫Baiklah, jadi apa yang Anda perhatikan di sini?
‫Nah, apa yang kita lihat di sini adalah
‫bahwa objek kueri terlihat hampir identik
‫dengan objek filter yang kita tulis secara manual,
‫satu-satunya perbedaan adalah bahwa di sini kita memiliki tanda operator MongoDB di sini.
‫Jadi itulah satu-satunya hal
‫yang hilang di depan nama operator ini.
‫Oke, jadi solusi untuk
‫ini pada dasarnya adalah mengganti semua operator
‫seperti ini dengan operator MongoDB koresponden
‫mereka, jadi pada dasarnya menambahkan tanda dolar ini di sini, oke.
‫Jadi sekarang mari kita terapkan itu, dan sebenarnya
‫kita melakukannya di suatu tempat di sini, mari
‫kita tambahkan beberapa komentar lagi di sini.
‫Jadi pemfilteran yang kita lakukan di kuliah terakhir, sekarang
‫mari kita tambahkan beberapa pemfilteran lanjutan, dan itulah
‫kode yang akan kita tulis sekarang.
‫Sekarang mari kita letakkan kode ini di sini tepat di atas, baiklah.
‫Kemudian kode ini di sini kita tidak terlalu membutuhkannya tetapi saya
‫masih ingin menyimpannya di sini
‫jadi mari kita taruh di sini di akhir.
‫Dan kemudian kode ini di sini sebagai referensi hanya untuk memastikan
‫bahwa kita tahu apa yang kita lakukan di sini.
‫Baiklah, dan sekarang kita tahu apa
‫yang perlu kita lakukan di
‫sini, sebenarnya ini hanya masalah Javascript sederhana.
‫Dan cara saya menyelesaikannya
‫adalah ini, jadi pertama-tama saya akan mengonversi objek menjadi
‫string sehingga string kueri sama dengan JSON dot stringify objek kueri, dan sekarang
‫saya dapat menggunakan string kueri itu untuk menggunakan
‫fungsi ganti di atasnya .
‫Baiklah, jadi yang ingin saya ganti
‫sekarang adalah gte dengan tanda dolar gte, dan kemudian
‫juga beberapa operator lainnya.
‫Jadi yang ingin kita
‫ganti lebih besar dari atau sama, lebih
‫besar dari, kurang dari atau sama, dan lebih kecil dari, dan
‫ada beberapa cara yang bisa kita lakukan,
‫tapi saya akan menggunakan ekspresi reguler.
‫Dan bagi saya pribadi, ekspresi reguler adalah
‫salah satu konsep yang paling sulit dalam Javascript
‫dan sebenarnya secara umum dalam pemrograman.
‫Jadi biasanya ketika saya perlu
‫melakukan sesuatu seperti ini, saya cukup membuka Stack Overflow atau
‫hanya Google sekitar untuk menemukan solusi yang tepat
‫untuk masalah yang saya coba selesaikan, oke.
‫Jadi yang ingin kita lakukan
‫sekarang di sini adalah pada dasarnya mencocokkan salah satu dari empat kata
‫ini dan kemudian menggantinya dengan kata yang sama
‫tetapi dengan tanda dolar di depan.
‫Dan ekspresi reguler
‫untuk menemukan salah satu dari empat kata ini menjadi seperti
‫ini; jadi kami membuka tanda kurung ini dan kemudian kami menulis
‫operatornya, jadi gte atau gt atau lte atau lt.
‫Dan kemudian kita juga perlu menambahkan \b ini sebelum dan sesudah, dan itu
‫karena kita hanya ingin mencocokkan kata-kata persis ini.
‫Jadi bayangkan ada sebuah kata yang memiliki lt di
‫dalamnya, maka kita tentu tidak ingin
‫mencocokkan yang hanya ingin kita cocokkan jika itu adalah kata
‫yang tepat, tanpa ada string lain di sekitarnya.
‫Jadi ekspresi reguler yang saya miliki di
‫sini akan menanganinya, dan sebenarnya ada
‫satu bagian yang hilang dan itu adalah bendera g di sini
‫yang berarti itu akan benar-benar terjadi beberapa kali.
‫Jadi kalau kita punya seperti dua atau
‫tiga operator atau bahkan semuanya, maka akan menggantikan semuanya.
‫Dan tanpa g ini di sini,
‫itu hanya akan menggantikan kemunculan pertama, jadi yang ini sangat penting.
‫Sekarang, sebenarnya kita ingin menggantinya dengan apa?
‫Nah, metode replace
‫sebenarnya menerima callback yang sangat kuat, dan callback
‫ini memiliki argumen pertama, kata
‫yang cocok, atau string yang cocok.
‫Jadi kita bisa meneruskan kecocokan ke fungsi panggilan balik itu dan
‫apa yang kita kembalikan dari panggilan balik ini adalah
‫string baru yang akan menggantikan yang lama, oke?
‫Jadi mari kita buat string
‫template di sini,
‫dan jadi kita ingin mengganti pencocokan dengan tanda dolar, oke, jadi
‫ini adalah bagian dari sintaks string template.
‫Jadi ini pertandingan ini, dan kemudian kami
‫ingin meletakkan tanda dolar di depannya.
‫Dan sekarang hanya untuk
‫memastikan, mari kita log ke konsol dan benar-benar ingin
‫objek kembali, jadi titik JSON mengurai string kueri.
‫Baiklah, biarkan saya melanjutkan dan membersihkan ini di sini sehingga
‫Anda dapat melihat hasilnya sedikit lebih baik.
‫Jadi sekali lagi, kita mendapatkan
‫kesalahan ini di sini dan itu tentu saja
‫karena MongoDB tidak dapat benar-benar menggunakan string
‫kueri atau objek kueri seperti yang kita miliki sekarang.
‫Dan di sini kami memiliki
‫dua hasil dan Anda benar-benar melihat bahwa hasil kami
‫sama persis seperti sebelumnya dan ada sesuatu
‫di sini yang jelas tidak berfungsi.
‫Jadi mari kita coba mencari tahu apa itu.
‫Dan di sini ekspresi reguler terlihat baik-baik saja, semuanya terlihat
‫baik-baik saja di sini, ah, tapi oke,
‫masalahnya adalah saya menggantinya dalam string tetapi kemudian saya tidak
‫menyimpannya di mana pun.
‫Dan sebenarnya kami ingin menyimpannya kembali ke string kueri.
‫Jadi mari kita ubah
‫ini di sini menjadi let, sehingga
‫kemudian dapat mengubah data dan katakanlah, string kueri, oh maaf.
‫Jadi, string kueri sama dengan string kueri yang diganti, sama
‫seperti sebelumnya, jadi yang saya lupakan hanyalah menyimpan hasilnya
‫di sini kembali ke variabel.
‫Mari kita coba lagi, dan sekarang berhasil.
‫Jadi sekarang kita memiliki
‫tanda dolar di depan operator, bagus.
‫Oke, jadi berhasil, mari singkirkan komentar ini di sini dan sekarang
‫akhirnya, yang harus kita lakukan adalah sebenarnya
‫di sini tidak menggunakan objek kueri tetapi hanya menggunakan ini.
‫Jadi JSON. mengurai string kueri, dan
‫tentu saja jika Anda tidak memiliki operator apa pun dalam string
‫kueri, maka semuanya akan berfungsi dengan baik.
‫Itu tidak akan menemukan salah satu dari empat operator ini di sana tetapi itu
‫tidak masalah, itu tidak akan menggantikan
‫apa pun.
‫Dan juga mari kita lanjutkan dan coba ini dan ini
‫membutuhkan sedikit waktu tetapi memang hasilnya
‫kembali dengan tiga hasil,
‫jadi sekarang mari kita periksa apakah mereka benar-benar benar.
‫Jadi durasinya harus lebih besar atau sama
‫dari lima, dan yang ini di sini
‫adalah durasi lima, ini memiliki
‫durasi sembilan, yang lebih besar
‫atau sama dari lima, dan itu benar-benar berfungsi, kesulitannya masih
‫mudah dan jadi apa artinya kode yang baru saja kita
‫terapkan berfungsi dengan baik.
‫Sempurna, sekarang mari kita bersenang-senang menambahkan parameter
‫lain di sana, jadi mari kita
‫filter harganya sekarang juga.
‫Jadi yang ini hampir 2000, lalu 1100, yang ini 300.
‫Jadi sekarang mari kita filter untuk harga kurang dari seribu, atau
‫kurang dari seribu lima ratus.
‫Dan harga, dan sekarang lagi tanda kurung kami,
‫dan kami menggunakan kurang dari 1500, dan baiklah, kirimkan itu.
‫Dan apa yang kita dapatkan di sini, oh, sekarang kita hanya memiliki dua hasil.
‫Dan memang, harga di sini, 397, dan di sini 1197,
‫dan yang sebelum itu 2000 sekarang hilang.
‫Jadi kami memfilter yang itu juga
‫menggunakan lagi operator yang baru saja kami terapkan.
‫Dan kami sekarang dapat memfilter
‫semua jenis barang di sini tetapi Anda mengerti maksudnya, jadi
‫ya, kami menerapkan jenis pemfilteran lanjutan kami di
‫sini pada titik ini, yang sekarang bahkan menerima empat operator ini.
‫Sekarang di dunia nyata, kita
‫kemudian harus menulis beberapa dokumentasi, pada dasarnya
‫untuk memungkinkan pengguna mengetahui jenis operasi apa
‫yang dapat mereka lakukan pada API kita, bukan?
‫Jadi sekali lagi, idealnya kami benar-benar mendokumentasikan API kami,
‫menentukan permintaan mana yang dapat dibuat menggunakan
‫metode htp mana, dan juga jenis pemfilteran
‫atau pengurutan apa, atau semua
‫fitur ini, mana yang tersedia dan bagaimana mereka
‫dapat menggunakannya, benar ?
‫Sekarang, dalam kasus kami, kami tentu saja tidak
‫akan melakukan itu tetapi sekali lagi, jangan
‫lupa bahwa jika Anda benar-benar mengimplementasikan API yang akan digunakan
‫oleh orang lain, maka Anda harus benar-benar melakukan dokumentasi semacam ini.
‫Tapi bagaimanapun, mari kita beralih ke video
‫berikutnya dan menerapkan fungsi penyortiran.