‫Instruktur: Baiklah, dan sekarang hanya untuk menyelesaikan bagian
‫ini, mari kita buat beberapa pabrik untuk mendapatkan dokumen.
‫Dan mari kita mulai dengan getOne di sini, oke?
‫Ekspor. getOne, tapi yang ini sebenarnya sedikit lebih
‫rumit, dan itu karena kita memiliki
‫populasi di handler getTour.
‫Jadi, mari kita lihat itu.
‫Jadi, di sini, di sini, kita memiliki populasi ini di sini,
‫yang berbeda dari semua penangan
‫get lainnya di sumber daya lainnya, bukan?
‫Tapi, yah, ini sebenarnya
‫bukan masalah karena kita hanya akan membiarkan
‫diri kita memasukkan objek pilihan yang terisi ke fungsi getOne kita, oke?
‫Jadi, alih-alih hanya meneruskan
‫model, kami juga akan mengisi, jadi opsi, baiklah.
‫Jadi, dari sini kita akan mengembalikan
‫fungsi handler normal.
‫Jadi, mari kita lanjutkan dan salin lagi semua
‫ini, oke.
‫Jadi, kita tidak membutuhkan yang ini di sini.
‫Lalu di sini, seperti biasa,
‫ini adalah modelnya, dan ini dia doc.
‫Nah, sebenarnya di sini, dokumen,
‫dan di sini, sekali lagi, data sama dengan doc.
‫Sekarang, kita juga perlu membuat beberapa
‫perubahan di sini sekarang karena
‫populasi ini, jadi pada dasarnya, pertama-tama kita akan
‫membuat kueri, dan kemudian, jika ada objek opsi
‫populasi, kita akan
‫menambahkannya ke kueri, dan kemudian dengan akhir, tunggu pertanyaan itu, oke?
‫Masuk akal?
‫Jadi, mari kita terjemahkan apa yang baru saja saya katakan.
‫Jadi, kuerinya sama dengan Model. findById, seperti ini,
‫kan?
‫Kemudian, jika ada objek pilihan yang terisi,
‫maka
‫dalam hal ini,
‫kueri akan menjadi kueri. isi dengan opsi isi, oke?
‫Dan kemudian, akhirnya kami menunggu permintaan kami, dan
‫menyimpannya di dokumen.
‫Jadi, tunggu pertanyaannya seperti ini, oke.
‫Dan, itu sebenarnya.
‫Jadi, logika yang kita
‫miliki di sini dengan tidak menunggu kueri segera,
‫melainkan hanya menyimpannya ke dalam
‫variabel, sehingga kita dapat, pada langkah berikutnya, memanipulasinya.
‫Kami sebenarnya sudah melakukan hal semacam
‫ini sebelumnya ketika kami membangun fitur API kami, bukan?
‫Jadi, hanya pada akhirnya, ketika seluruh kueri sudah siap, kami
‫kemudian akan menunggunya dan menyimpannya di suatu tempat dalam sebuah variabel.
‫Sekarang, mari kita lanjutkan dan benar-benar menggunakan yang ini di mana-mana,
‫tentu saja dimulai dengan Tur.
‫Jadi, getTour sekarang akan
‫menjadi pabrik. getOne,
‫dan berikan objek Tour
‫dan isi opsi, ingat itu?
‫Jadi, apa yang akan kita lakukan adalah mengatakan jalur dan ulasan.
‫Benar, jadi ingat bahwa properti path pada dasarnya adalah
‫bidang yang ingin kita
‫isi, dan kemudian kita juga dapat menentukan pilih,
‫jadi ingat yang ini, di mana
‫kita menentukan bidang mana yang sebenarnya ingin kita dapatkan, bukan?
‫Tapi dalam
‫kasus ini, kita tidak memiliki
‫semua itu, jadi biarkan saja seperti ini.
‫Dan sekarang, kita benar-benar dapat melanjutkan dan menghapus semua ini.
‫Sangat bagus.
‫Dan, untuk memastikan, mari kita uji ini dengan cepat.
‫Jadi, kami akan mendapatkan Tur tertentu,
‫dan, memang, itu masih berfungsi.
‫Mari kita lihat apakah yang satu ini memiliki beberapa ulasan.
‫Oh, ya, sebenarnya ada,
‫dan Anda lihat proses populasi juga masih berjalan.
‫Jadi, itu berhasil, saya akan mengatakan.
‫Jadi, sekarang mari juga gunakan getOne ini di
‫semua sumber daya lainnya.
‫Jadi, pengontrol pengguna di sini di mana kita miliki, mari kita lihat di
‫mana itu, ah, di bawah sini.
‫Jadi, katakanlah pabrik. getOne, tetapi
‫hanya dengan model pengguna, dan tidak ada
‫objek opsi yang terisi.
‫Oke, dan karena kita
‫di sini, mari kita ubah pesan kesalahan di
‫sini untuk membuat
‫pengguna, jadi rute ini tidak ditentukan, tidak akan pernah,
‫dan silakan gunakan pendaftaran sebagai gantinya.
‫Selanjutnya, dan akhirnya,
‫hal yang sama untuk ulasan pada dasarnya.
‫Jadi, ekspor. getReview adalah
‫pabrik yang sama. getOne review,
‫dan saya pikir kami belum memiliki (bergumam) rute kami dulu.
‫Dan, memang, kami tidak melakukannya, jadi tambahkan ini dengan sangat cepat
‫di sini, reviewController. dapatkan Review, oke?
‫Mari kita cepat menguji yang ini
‫juga, hanya karena saya juga ingin menambahkannya di
‫sini ke Tukang Pos, oke?
‫Jadi, tiru saja yang ini karena mirip, dan
‫kemudian, memang, itu dapat.
‫Dan, ya, berfungsi dengan baik, simpan di sini di ulasan, dan
‫dapatkan Ulasan.
‫Baiklah, sekarang semua
‫yang hilang pada dasarnya adalah fungsi getAll factory, bukan?
‫Jadi, pada
‫dasarnya, untuk menggantikan getAllTours ini, getAllUsers, yang
‫juga harus kita miliki di suatu tempat di
‫sini, jadi getAllUsers, dan juga getAllReviews, jadi mari
‫kita salin lagi di sini dari
‫pengontrol Tour karena sebenarnya ini yang
‫paling lengkap karena memiliki semua fitur API ini,
‫dan karenanya, setelah membuat fungsi pabrik getAll kami,
‫ketiga sumber daya kemudian akan mendapatkan fitur API ini.
‫Jadi sekali lagi, menyalin semua ini,
‫mengekspor. getAll,
‫dan jadi sekarang, kita benar-benar harus memerlukan
‫fitur API ini
‫di sini, dan sebenarnya kita dapat menghapusnya dari
‫sini karena kita tidak akan
‫membutuhkannya lagi karena sekarang kita mentransfernya ke pabrik handler, bukan?
‫Sekarang, di sini yang perlu kita lakukan adalah mengganti,
‫seperti biasa, dengan model, lalu di
‫sini, doc dan data.
‫Sekarang, oke, sempurna.
‫Jadi, mari kita
‫lihat apakah ini berhasil, getAll with Tour.
‫Dan sekarang, saya benar-benar ingin melihat
‫apakah ini masih berfungsi dengan semua
‫fitur ini, jadi di sini, getAll Tours,
‫dan jadi, mari tambahkan
‫string kueri kita di sini, dan katakanlah durasinya lebih besar
‫atau sama dari katakanlah 10, dan urutkan berdasarkan harga.
‫Oke, dan jadi kita mendapatkan dua hasil di sini.
‫Oke, itu tidak bekerja.
‫Bagaimanapun, kami mendapatkan dua hasil (tertawa) di sini,
‫dan keduanya memiliki durasi lebih
‫dari 10, dan harganya
‫1497, dan yang kedua lebih tinggi, oke?
‫Mari kita taruh di sini seperti ke tujuh, jadi
‫kita mendapatkan hasil yang sedikit lebih banyak.
‫Oke, dan sekarang kita mendapatkan lima.
‫Oke, bagaimanapun, sekarang mari kita lakukan hal yang sama untuk
‫ulasan karena saya sangat bersemangat untuk menguji fitur API
‫ini pada ulasan juga.
‫Sekarang, satu masalah yang kita miliki
‫di sini adalah bahwa pengendali rute ini sebenarnya memiliki
‫dua baris kode yang tidak dimiliki oleh semua pengendali getAll lainnya, oke?
‫Tapi, apa yang akan kita lakukan di sini adalah dengan
‫menyalin kode ini ke pabrik handler kita juga, oke?
‫Itu semacam peretasan
‫karena kita benar-benar hanya membutuhkan yang ini untuk ulasan getAll,
‫tetapi untuk menyiasatinya akan terlalu banyak pekerjaan di
‫sini dalam situasi ini, dan sekali lagi, saya hanya
‫ingin membuatnya tetap sederhana di sini, oke.
‫Jadi, mari
‫salin ini di sini, dan saya menambahkan komentar
‫di sini untuk memungkinkan getReviews bersarang di Tur, oke?
‫Jadi filter ini, kami juga akan menyebarkannya di sini, oke?
‫Jadi sekali lagi, ini adalah
‫peretasan kecil, tapi saya
‫akan membiarkannya seperti ini karena saya pikir itu masuk akal, oke.
‫Bagaimanapun, mari kita singkirkan ini,
‫jadi pabrik. getAll dan review, oke?
‫Mari kita letakkan ini di sini di samping yang lainnya.
‫Dan sekarang,
‫seperti yang Anda lihat, kita sebenarnya tidak lagi membutuhkan catchAsync ini di
‫sini, jadi saya akan berkomentar di
‫sini karena, siapa tahu, mungkin di masa depan kita akan
‫membutuhkannya untuk beberapa fungsi Middleware lainnya di sini, semuanya Baik.
‫Jadi, itu terlihat bagus
‫dan bersih, dan sekarang mari kita uji ulasan getAll.
‫Baiklah, jadi mari kita simpan perubahan di sini juga.
‫Yang ini tidak kita
‫butuhkan, tetapi saya sebenarnya ingin mendapatkan semua ulasan.
‫Jadi, saat ini kami
‫memiliki empat ulasan, jadi sekarang mari
‫kita coba memfilter ulasan hanya dengan peringkat empat, katakanlah.
‫Jadi, string kueri, peringkat sama dengan empat.
‫Oh, dan itu benar-benar
‫berfungsi, sangat bagus, itu sangat bagus.
‫Jadi, seperti ini, kami mendapatkan akses ke semua fitur
‫API ini seperti pemfilteran, pengurutan, pagination, dan semua hal bagus yang
‫kami terapkan (tertawa) sejak lama
‫di kursus, bukan?
‫Dan, saya juga
‫ingin memastikan bahwa ulasan getAll di Tour ini juga masih berfungsi.
‫Jadi, mari kita periksa itu,
‫dan, ya, Anda melihat bahwa itu benar-benar terjadi.
‫Jadi, ID Tur yang kami
‫miliki di sini persis sama di sini dan di sini.
‫Jadi, yang itu
‫juga masih berfungsi, jadi mari
‫kita juga menggunakan getAll untuk pengontrol pengguna, oke.
‫Jadi, pada dasarnya hanya mengganti
‫ini, jadi pabrik. getAll pengguna, baiklah.
‫Dan, mari kita letakkan
‫yang ini di sini dekat dengan yang lain, oke.
‫Dan, lalu yang ini juga,
‫jadi pada dasarnya memiliki semua yang dihasilkan
‫oleh fungsi pabrik bersama-sama,
‫dan kemudian semua yang lain tepat di atasnya.
‫Baiklah, mari kita lakukan hal yang sama di sini,
‫yang ini sudah bagus dan
‫bersih, dan sama untuk pengontrol Tour, jadi apa lagi yang
‫kita miliki di sini?
‫Yang ini bisa
‫kita singkirkan, dan, oke, menurutku ini terlihat bagus.
‫Sekali lagi, kita dapat mengomentari potongan kode ini
‫karena, setidaknya untuk saat ini, kita tidak membutuhkannya lagi.
‫Jadi, hanya untuk mengujinya lagi di sini dengan pengguna,
‫mari kita kumpulkan
‫semuanya, dan, memang, inilah mereka.
‫Kami sekarang juga dapat mengatakan
‫bahwa kami hanya menginginkan yang dengan
‫peran pengguna, dan, memang, itu berfungsi dengan baik.
‫Hebat, dan itu benar-benar menyelesaikan bagian dari pembuatan
‫fungsi pabrik pengendali, dan ini
‫benar-benar merupakan langkah maju yang besar dalam proyek kami,
‫jadi ingatlah bahwa,
‫sebentar lagi, kami juga akan membuat
‫sumber daya pemesanan, dan Anda melihat bahwa mungkin
‫kami Anda akan dapat membuat API utama
‫untuk pemesanan ini dalam
‫waktu sekitar lima detik, cukup menggunakan lima fungsi pabrik ini, oke.
‫Pokoknya, kerja bagus, kerja bagus, dan sampai
‫jumpa di yang berikutnya.