‫Instruktur: Jadi Anda
‫sudah belajar cara membuat dokumen baru di database.
‫Namun dalam kuliah ini saya
‫akan menunjukkan kepada Anda cara yang lebih mudah dan lebih baik
‫untuk melakukannya, saat kami mengimplementasikan create tour handler kami.
‫Jadi pada titik ini API
‫kami pada dasarnya tidak melakukan apa-apa lagi.
‫Itu tidak berfungsi
‫lagi karena pada dasarnya kami menghapus semua fungsi
‫yang kami miliki di video terakhir.
‫Dan kami melakukannya, sehingga selama beberapa
‫kuliah berikutnya kami dapat membangunnya kembali menggunakan database nyata.
‫Oke, jadi pada dasarnya akhirnya membangun API kita yang sebenarnya.
‫Dan kita akan mulai dengan
‫mengimplementasikan fungsi createTour.
‫Tapi ingat saja fungsi pawang
‫yang dipanggil begitu ada permintaan pos
‫ke rute wisata.
‫Jadi itulah yang kami miliki di sini di tourRoutes.
‫Jadi mari kita taruh di sini.
‫Jadi yang baru saja saya katakan adalah ini.
‫Jadi kami memiliki checkBody ini di sini.
‫Yang sebenarnya adalah
‫sesuatu yang bisa kami hapus juga.
‫Jadi di mana itu sebenarnya?
‫checkBody baiklah,
‫jadi ini adalah salah satu fungsi yang sebenarnya
‫tidak kita perlukan lagi.
‫Karena ini pada dasarnya untuk memvalidasi tubuh.
‫Jadi untuk melihat apakah itu memiliki nama atau harga properti di dalamnya.
‫Benar?
‫Tapi sekarang model
‫luwak kami benar-benar akan menanganinya.
‫Dan sekali lagi, ini
‫bagus untuk menunjukkan kepada kita bagaimana middle-ware
‫bekerja tapi sekarang kita bisa menyingkirkannya.
‫Oke, jadi saya akan menghapusnya dari sini juga.
‫Berikan simpanan baru.
‫Dan sekarang sudah kembali bekerja.
‫Pokoknya fungsi yang kita
‫buat sekarang adalah fungsi createTour ini.
‫Di mana hanya satu data
‫yang akan dipanggil segera setelah seseorang mencapai rute tur dengan permintaan pos.
‫Oke, jadi hanya untuk rekap itu
‫karena saya tahu itu bisa sedikit
‫membingungkan dengan file yang berbeda dan folder yang berbeda
‫dan fungsi yang berbeda.
‫Tetapi juga sangat penting
‫bahwa kita mulai mengatur kode kita
‫dari awal.
‫Oke?
‫Bagaimanapun, kita di sini dalam fungsi createTour.
‫Jadi sekarang mari kita benar-benar membuat tur baru.
‫Dan kita akan melakukannya berdasarkan data
‫yang masuk dari tubuh.
‫Ingat bahwa?
‫Sekarang ingat bagaimana kita dulu membuat dokumen
‫beberapa kuliah yang lalu.
‫Jadi kami melakukannya seperti ini.
‫Misalnya misalkan newTour lalu
‫sama dengan
‫newTour lalu data di dalamnya.
‫Jadi kami melakukannya seperti ini dan itu adalah tur baru.
‫Dan kemudian kita ketik newTour. simpan dan
‫itu berfungsi dengan baik.
‫Tapi kita bisa melakukannya dengan cara yang lebih mudah.
‫Jadi alih-alih melakukan ini, kita bisa
‫melakukan Tour. buat lalu tempel data di sana.
‫Oke dan itu akan melakukan hal yang sama persis.
‫Perbedaan utama adalah bahwa dalam versi ini
‫di sini pada dasarnya kita memanggil metode secara langsung
‫di tur sementara di versi pertama ini kita memanggil
‫metode pada dokumen baru.
‫Oke, dan itu benar-benar berbeda.
‫Jadi sekali lagi kami memiliki tur yang kami
‫buat dari model.
‫Dan kemudian pada tur itu kami menggunakan metode save.
‫Karena dokumen memiliki akses ke metode ini
‫dan banyak metode lainnya juga.
‫Tapi di sini dalam situasi
‫kedua kita sebut ini membuat metode tepat pada model itu sendiri, oke?
‫Sekarang ingat bagaimana metode penyimpanan ini mengembalikan janji.
‫Dan jadi ini membuat di sini tidak mengembalikan janji juga.
‫Jadi untuk mendapatkan akses ke dokumen file
‫seperti yang dibuat dalam
‫database, kita akan menggunakan . lalu oke?
‫Tapi alih-alih menggunakan janji seperti ini, saya
‫akan mulai menggunakan async menunggu.
‫Baik.
‫Jadi fungsi ini di sini harus menjadi fungsi async.
‫Jadi yang perlu kita
‫lakukan adalah menulis async di sini.
‫Jadi kami memiliki async dan sekarang kami dapat menunggu hasil dari janji
‫ini di sini.
‫Jadi saya harap Anda akrab dengan ini.
‫Dan saya sebenarnya memiliki bagian
‫dalam kursus ini yang membahas hal-hal seperti ini.
‫Jadi jika Anda tidak
‫menonton bagian itu tetapi masih belum 100% familiar dengan async waiting,
‫silakan lanjutkan dan tonton bagian itu sehingga
‫Anda benar-benar mengerti apa yang terjadi di sini.
‫Oke, jadi daripada menggunakan ini maka di sini saya
‫akan menggunakan async menunggu dan
‫kemudian menyimpan nilai hasil dari janji ini dalam
‫variabel tur baru.
‫Oke, sekarang bagian terakhir dari teka-teki di
‫sini adalah tentu saja melewatkan beberapa data nyata ke dalam metode pembuatan ini.
‫Dan alih-alih objek kosong
‫ini, kita akan meneruskan badan permintaan
‫jadi req. body dan itulah
‫data yang disertakan dengan permintaan posting, bukan?
‫Sekarang hanya sekali
‫lagi, hanya untuk memastikan bahwa semuanya jelas bagi Anda.
‫Oke jadi kita bisa langsung menggunakan model tur dan
‫memanggil metode create di atasnya.
‫Kemudian ke fungsi itu kita melewatkan
‫data yang ingin kita simpan di database sebagai tur baru.
‫Dan data itu berasal dari badan pos, bukan?
‫Dan itu disimpan di dalam badan titik permintaan.
‫Jadi variabel ini di sini.
‫Sekarang metode ini di sini kemudian akan mengembalikan janji.
‫Dan kami menunggu janji itu menggunakan
‫async menunggu dan kemudian menyimpan hasilnya ke variabel
‫newTour yang akan menjadi
‫dokumen baru yang sudah dibuat dengan ID dan semuanya, oke?
‫Jadi saya akan menyimpan
‫kode ini di sini hanya sebagai referensi.
‫Dan untuk sekarang mari kita kembalikan data ini.
‫Sepotong kode sebenarnya.
‫Berikan simpanan.
‫Dan sekarang kita mendapatkan kesalahan serat ES ini.
‫Jadi mari kita lihat
‫yang hanya menempatkan mouse kita di sini.
‫Dan itu memberitahu kita bahwa fungsi async tidak didukung sampai
‫node 7 ini. 6 dan kesalahan serat
‫ES ini berasal dari plugin simpul yang sebenarnya
‫kami instal.
‫Jadi Anda bisa melihatnya di sini.
‫Baiklah, jadi yang akan kita lakukan untuk memperbaikinya adalah
‫dengan membuka paket. json dan di
‫sini Anda menemukan versi simpul
‫yang sebenarnya kami gunakan.
‫Jadi itu sangat sederhana.
‫Kami hanya perlu menentukan properti engine di
‫sini di dokumen json kami.
‫Dan atur node menjadi lebih besar atau
‫sama dengan 10.
‫Oke, dan itu karena dalam
‫kursus ini kita menggunakan setidaknya node sepuluh.
‫Jadi 7. 6 akan cukup untuk menghilangkan kesalahan itu,
‫tetapi tentu saja kami menentukan versi sebenarnya yang
‫sebenarnya kami gunakan.
‫Jadi kami memberikan yang satu ini menghemat.
‫Tutup itu.
‫Dan sekarang kesalahan kami di sini benar-benar hilang.
‫Sekarang tinggal satu langkah lagi sebelum kita benar-benar dapat
‫mencobanya di aplikasi Postman kita.
‫Dan itu adalah bahwa kita benar-benar perlu menangani kesalahan.
‫Oke, dan perlu diingat bahwa dengan
‫async menunggu kita perlu menguji kesalahan menggunakan sintaks try catch.
‫Jadi kami menulis blok try.
‫Kemudian bungkus semua kode kita di sana.
‫Dan akhirnya blok tangkapan.
‫Yang seperti yang sudah kita ketahui memiliki akses ke objek kesalahan.
‫Dan sekarang apa yang sebenarnya kita taruh di sini?
‫Nah kita perlu
‫memikirkan kapan tepatnya kesalahan bisa terjadi.
‫Jadi ingat seperti dua kuliah yang
‫lalu ketika kami membuat dokumen pertama kami.
‫Kami mendapat kesalahan
‫saat kami mencoba membuat dokumen
‫tanpa salah satu bidang yang diperlukan, bukan?
‫Dan itu adalah kesalahan validasi.
‫Dan itu salah satu kesalahan yang akan tertangkap di sini.
‫Oke karena jika kita mencoba membuat dokumen
‫misalkan tanpa salah satu bidang
‫wajib maka janji yang
‫dibuat di sini akan ditolak, oke?
‫Jadi jika kita memiliki janji yang ditolak
‫di sini maka itu akan masuk ke blok tangkapan.
‫Dan oleh karena itu, pada dasarnya di blok tangkapan
‫ini di sini kami ingin mengirim
‫kembali respons yang mengatakan bahwa ada kesalahan.
‫Baiklah jadi res. status di sini lagi
‫dan 400 yang berarti permintaan buruk. json dan sekarang sesuatu yang sangat mirip
‫dengan yang
‫ini tetapi statusnya dan itu gagal
‫dan alih-alih data di sini kami mengirim pesan
‫dan untuk saat ini mari kita atur pesan ke kesalahan.
‫Baik.
‫Dan
‫sekarang mari kita kembali ke aplikasi Postman kita dan mencobanya.
‫Oke, jadi buat yang ini dan
‫sekarang mari buat tur baru.
‫Jadi sekarang di sini kita
‫memiliki kesulitan
‫nama durasi dan harga dan jadi mari kita
‫juga menambahkan peringkat dan itu
‫harus dalam tanda kutip ganda 4. 7.
‫Baiklah, dan sekarang tiba saatnya.
‫Kirim dan memang di sini kita pergi.
‫Jadi ini adalah tur yang baru
‫saja kami buat.
‫Kami memiliki peringkat kami.
‫Kami memiliki nama kami dan kami memiliki harga kami.
‫Dan tentu saja ID yang dibuat secara otomatis.
‫Sekarang Anda mungkin memperhatikan bahwa kami tidak memiliki kesulitan dan
‫tidak ada harga.
‫Nah menurut Anda mengapa demikian?
‫Itu karena kedua bidang ini sebenarnya tidak ada
‫dalam skema kami dan oleh
‫karena itu tidak dimasukkan ke dalam database.
‫Jadi semua hal lain yang tidak ada dalam
‫skema kami diabaikan begitu saja.
‫Jadi itulah kekuatan skema kita, oke?
‫Bagus, sekarang mari kita coba mengirim ini lagi dan
‫itu akan memberi kita kesalahan, bukan?
‫Dan memang di sana kita pergi.
‫Kami memiliki 400 permintaan buruk kami.
‫Dan kami memiliki pesan ini yang merupakan kesalahan
‫lengkap yang kami dapatkan.
‫Jadi di sini kita melihat bahwa pesan kesalahan adalah kunci duplikat.
‫Dan itu karena kita sudah memiliki Test Tour 2.
‫Jadi itu tidak bisa membuat yang lain.
‫Jadi mari kita buat yang lain di sini seperti Jonas Tour.
‫Itu tidak terlalu penting, oke?
‫Saya hanya ingin membuatnya,
‫pertama tanpa semua ini hanya
‫untuk melihat apakah kita mendapatkan kesalahan lain.
‫Dan memang kami mendapatkan beberapa kesalahan lagi di sini.
‫Kali ini dikatakan bahwa validasi tur
‫gagal karena tur pasti
‫ada harganya.
‫Oke, jadi Anda lihat bahwa sekarang kami
‫memiliki struktur kesalahan aneh semacam ini di sini.
‫Jadi Mongo DB mengembalikan objek kesalahan lengkap yang sangat besar ini.
‫Dan nanti kita benar-benar akan mengurusnya.
‫Jadi kita akan memiliki seluruh bagian tentang penanganan kesalahan saja.
‫Dan saat itu kita akan membuat beberapa kesalahan yang lebih berarti.
‫Oke, untuk sekarang mari kita ganti objek kesalahan
‫ini dengan beberapa string normal di sini.
‫Jadi misalkan data yang dikirim tidak valid.
‫Oke, jadi jangan lakukan hal seperti ini dalam aplikasi produksi
‫nyata tetapi sekali lagi kita
‫akan memiliki beberapa penanganan
‫kesalahan nyata nanti yang akan menanganinya.
‫Oke, jadi menampilkan kesalahan yang berarti kepada klien.
‫Jadi mari kita kembali ke sini
‫mengirimnya lagi.
‫Dan sekarang kita mendapatkan string normal ini di sini.
‫Jadi mari kita buat harga saja di sini.
‫Mari kita atur ke 567
‫lalu kirimkan.
‫Dan sekarang Anda akan melihat bahwa peringkat default
‫kami di sini sebenarnya masih berfungsi.
‫Sekarang mari kita cari tahu semua ini di kompas juga.
‫Dan memang kami mendapatkan empat tur kami di database.
‫Jadi semua tes aneh yang telah kami
‫lakukan sampai saat ini.
‫Jadi mari kita lanjutkan dan hapus dua yang terakhir ini.
‫Itu benar-benar hanya untuk pengujian.
‫Baik.
‫Jadi ada yang tidak beres di sini, kurasa.
‫Oke, sekarang kita kembali ke dua ini.
‫Sekarang mari kita buat yang ketiga yang sebenarnya kita
‫miliki sebelumnya di bagian terakhir.
‫Yang merupakan Petualang Salju.
‫Jadi Petualang
‫Salju.
‫Harga adalah...
‫Saya tidak yakin
‫lagi seperti 697 mungkin.
‫Dan peringkatnya
‫seperti enam atau sebenarnya 4. 8.
‫Mengirim orang itu.
‫Dan memang di sini kita pergi.
‫Besar.
‫Hanya untuk dengan cepat merekap fungsi createTour kami.
‫Jadi kami mencoba menangkap di sini karena kami sebenarnya menggunakan
‫fungsi menunggu async di sini.
‫Benar, jadi kami menggunakan async menunggu karena
‫tur ini. create mengembalikan
‫janji yang kami tunggu
‫sehingga kami kemudian dapat menyimpan dokumen tur yang
‫baru dibuat di dalam variabel ini
‫dan kemudian mengirimkannya bersama dengan
‫respons ke klien di sini.
‫Oke tapi jika ada kesalahan, seperti kesalahan
‫validasi misalnya maka kesalahan itu
‫akan ditangkap dan kami
‫mengirim sesuatu yang lain kembali
‫ke klien dengan pesan kesalahan ini.
‫Jadi beginilah cara kami membuat dokumen menggunakan luwak.
‫Selanjutnya kita akan berbicara tentang membaca dokumen.