‫Instruktur: Jadi sekarang
‫setelah Anda mengetahui dasar-dasar
‫Mongoose dengan menerapkan keempat operasi
‫yang benar, sekarang akhirnya data tur kami menjadi lebih
‫penting untuk membuat tur lebih lengkap.
‫Jadi pada titik ini, dokumen tur kami hanya dapat memiliki
‫nama, peringkat, dan harga.
‫Tapi tentu saja, kami membutuhkan lebih banyak
‫data di sini, karena tujuannya adalah memiliki API yang sangat kaya
‫data, seperti ini.
‫Jadi mari kita lihat versi final
‫sebenarnya di sini sebagai referensi.
‫Dan jadi yang satu ini di sini.
‫Jadi kami mendapatkan semua
‫tur, dan itu akan terlihat seperti ini.
‫Oke, jadi Anda lihat bahwa
‫di setiap tur, kami memiliki lokasi awal, kami memiliki
‫peringkat rata-rata, jumlah peringkat, gambar, tanggal mulai.
‫Panduan, nama, durasi, ukuran grup maksimum, kesulitan,
‫harga, ringkasan,
‫deskripsi, sampul gambar, lokasi.
‫Bahkan siput, ulasan, durasi dalam minggu, dan ID.
‫Jadi Anda melihat banyak data, dan
‫kami tidak akan menambahkan semua data dalam kuliah
‫ini di sini.
‫Ada beberapa bagian yang belum bisa kami
‫tambahkan, tapi tentu saja kami bisa membuatnya sedikit lebih lengkap, oke?
‫Dan mari kita simpan ini di sini, seperti sebagai referensi, dan dapatkan
‫semua tur, dan saya akan meletakkannya di
‫luar folder mana pun.
‫Jadi mari kita taruh di sini di atas.
‫Dan itu tidak berhasil karena suatu alasan.
‫Oke, mari kita taruh di sini, kalau begitu.
‫Oke, mari kita, itu
‫benar.
‫Dan sekali lagi, saya meninggalkannya di
‫sini, untuk terus membandingkan apa yang kita miliki
‫dengan apa yang kita tuju.
‫Jadi, mari kita kembali, dan mulai dengan
‫apa yang sudah kita miliki, dan
‫kita memiliki nama.
‫Dan itu sudah cukup baik, jadi
‫untuk saat ini saya akan membiarkannya seperti ini.
‫Jadi namanya, maka kita juga ingin durasi.
‫Dan durasi itu adalah angka, dan itu wajib.
‫Jadi set ke true, dan
‫pesannya adalah, tur harus memiliki durasi.
‫Jadi validator yang diperlukan di sini pada dasarnya adalah satu-satunya
‫validator yang akan saya tambahkan ke
‫masing-masing bidang ini di sini untuk saat ini.
‫Nanti, ketika kita akan berbicara lebih
‫detail tentang validator, kita akan menambahkan lebih banyak lagi.
‫Tetapi sekali lagi, untuk saat
‫ini, saya hanya ingin membuat beberapa bidang ini, tidak semuanya, wajib.
‫Selanjutnya, kita memiliki ukuran grup.
‫Jadi pada dasarnya, berapa banyak orang
‫yang bisa mengikuti satu tur.
‫Jadi saya menyebutnya maxGroupSize.
‫Dan itu lagi harus
‫menjadi nomor, dan itu lagi diperlukan.
‫Tur harus memiliki ukuran grup.
‫Jangan lupa koma di sini.
‫Selanjutnya, kita juga membutuhkan kesulitan.
‫Dan yang ini adalah string, dan kemudian, kita
‫akan mendefinisikan bahwa itu harus
‫menjadi medium, mudah, atau sulit, tetapi
‫sekali lagi, itu sebenarnya
‫adalah validator, dan saya akan membiarkannya nanti.
‫Oke, untuk saat ini, saya hanya mengatakan
‫bahwa itu harus memiliki kesulitan.
‫Selanjutnya, mari kita bicara tentang peringkat.
‫Jadi sekarang kami memiliki bidang yang disebut Peringkat,
‫tetapi sebenarnya kami ingin memiliki satu
‫bidang untuk rata-rata
‫peringkat, dan satu bidang untuk kuantitas peringkat.
‫Jadi pada dasarnya jumlah peringkat yang ada.
‫Jadi nanti, akan ada sumber lain yang disebut ulasan, di
‫mana pengguna akan dapat menulis ulasan
‫tentang tur dan memberi peringkat.
‫Dan itu akan menjadi sumber yang sama sekali berbeda,
‫dan model yang sama sekali berbeda.
‫Tapi tetap saja, kami pada dasarnya ingin
‫memiliki ringkasan peringkat ini dan ulasan ini di sini di tur.
‫Baiklah, dan alasannya akan Anda pelajari nanti
‫setelah kita mulai bagaimana dan mengapa kita memodelkan data dalam database
‫NoSQL, dan khususnya di MongoDB.
‫Oke, untuk saat ini, mari kita tambahkan rata-rata peringkat,
‫dan kuantitas peringkat.
‫Oke, jadi kami meninggalkan ini di
‫sini sebagai nomor,
‫dan dengan default ini, dan kuantitas peringkat, peringkatQuantity.
‫Itu tentu saja juga harus berupa
‫angka, dan defaultnya adalah nol.
‫Karena tentunya pada awalnya tidak
‫akan ada review sama sekali, ketika tour tersebut masih baru.
‫Sekarang saya tidak memberikan nilai yang diperlukan pada
‫kedua properti ini di sini, karena bukan
‫pengguna yang membuat
‫tur ini yang akan menentukan nilai ini, bukan?
‫Jadi ketika kami
‫membuat tur baru, kami tidak akan
‫pernah menentukan peringkat Rata-rata,
‫baik peringkat Kuantitas, karena itu
‫nanti akan dihitung dari ulasan nyata, oke?
‫Selanjutnya, kami memiliki harga di sini,
‫jadi tidak apa-apa seperti
‫ini, dan kami mungkin juga memiliki diskon.
‫Jadi katakanlah perusahaan
‫ini, jadi Natours, ingin memberikan diskon ke salah satu tur di
‫beberapa titik, sehingga mereka dapat
‫menentukan harga diskon di sini juga.
‫Jadi priceDiscount, jadi mari kita taruh di sini di nomor.
‫Kami tidak memerlukan opsi jenis skema apa pun di sini.
‫Misalnya, itu tidak wajib, jadi
‫untuk saat ini, biarkan saja seperti ini.
‫Selanjutnya, kita dapat menentukan ringkasan tur.
‫Jadi ringkasannya bertipe String.
‫Tapi aku tidak akan benar-benar membuatnya diperlukan.
‫Oke, dan itu hanya karena itu
‫tidak ada di halaman depan situs web kami.
‫Oke, jadi pada dasarnya itu tidak ada di ikhtisar.
‫Dan saya akan menunjukkannya kepada Anda sebentar
‫lagi, tetapi untuk sekarang
‫izinkan saya menambahkan di sini opsi jenis skema lain yang belum saya
‫tunjukkan kepada Anda, yang disebut trim.
‫Dan trim hanya berfungsi untuk string.
‫Dan saya akan mengaturnya menjadi benar.
‫Jadi ingat bagaimana saya mengatakan bahwa ada tipe skema
‫yang berbeda untuk tipe yang berbeda
‫di sini, dan untuk string, kami memiliki tipe skema yang
‫trim yang akan menghapus semua
‫ruang putih di awal dan di akhir string.
‫Oke, jadi jika seseorang masuk,
‫misalnya, tur ini, bla bla bla, tidak masalah.
‫Jadi jika seseorang memasuki ini, maka
‫semua spasi ini pada akhirnya
‫dan pada awalnya di sini akan terpotong.
‫Dan sebenarnya, kita dapat menempatkan hal yang sama pada nama,
‫misalnya, di sini.
‫Oke, kenapa tidak?
‫Jadi biarkan saja seperti ini.
‫Di sini saya melihat bahwa itu sebenarnya disebut durasi,
‫bukan durasi.
‫Baiklah, jadi itu ringkasannya, yang juga salah eja.
‫Jadi ringkasannya seperti ini.
‫Oh, dan ya, sekarang saya ingin menunjukkan
‫kepada Anda situs web Natours, sebenarnya.
‫Jadi itu kembali ke dokumentasi Mongoose kami.
‫Tapi inilah yang ingin saya tunjukkan kepada Anda.
‫Jadi Natur. dev, yang merupakan aplikasi asli dari aplikasi
‫ini, jadi ini adalah data yang kami miliki di API kami,
‫dan tentu saja kami juga perlukan di database.
‫Jadi kami memiliki semua data ini.
‫Jadi nama tur ini, kami memiliki kesulitan, kami memiliki durasi,
‫kami memiliki, ini adalah ringkasan, kemudian
‫kami memiliki lokasi awal, kami memiliki jumlah
‫lokasi, kami memiliki tanggal mulai,
‫kami memiliki ukuran
‫grup maksimum di di sini, dan kita
‫harus menentukan harga, rata-rata rating,
‫kuantitas rating.
‫Kami juga memiliki gambar di sini.
‫Dan kemudian di sini, di halaman detail, kami
‫memiliki ringkasannya di sini.
‫Kami memiliki panduan yang baru saja saya tunjukkan kepada Anda di Postman sebelumnya.
‫Kami memiliki beberapa gambar lagi.
‫Kami memiliki semua lokasi di sini, dan
‫kami memiliki semua ulasan.
‫Oke, seperti yang saya katakan, tidak
‫semua data ada di halaman Ikhtisar, jadi
‫tidak semua data juga diperlukan.
‫Oke, jadi mari kita kembali ke sini.
‫Selanjutnya, saya ingin menambahkan deskripsi.
‫Dan ini adalah tipe String, dan mari kita
‫atur trim menjadi true lagi.
‫Dan saya baru ingat
‫kalau rangkumannya sebenarnya ada di halaman Ikhtisar.
‫Jadi mari kita buat yang ini diperlukan.
‫Jadi Anda tambahkan di
‫sini
‫di akhir, benar, sebuah tur harus memiliki deskripsi.
‫Oke, selanjutnya kita akan menentukan imageCover.
‫Dan itulah gambar yang Anda lihat di halaman ikhtisar
‫dan jadi mari kita atur yang ini benar-benar membutuhkan peran ini.
‫Jadi tipenya harus string, karena pada
‫dasarnya ini hanya akan menjadi nama
‫gambar di sini, yang
‫nantinya bisa kita baca dari sistem file.
‫Oke, jadi benar-benar hanya nama gambar.
‫Jadi pada dasarnya referensi akan disimpan dalam database.
‫Dan itu adalah praktik yang sangat umum, oke?
‫Jadi kita bisa menyimpan seluruh gambar juga dalam database, tapi itu
‫biasanya bukan ide yang baik.
‫Kami hanya meninggalkan gambar di suatu tempat di sistem file
‫dan kemudian menempatkan nama gambar itu sendiri
‫di database sebagai bidang.
‫Jadi atur ke yang
‫dibutuhkan, benar, sebuah tur harus memiliki gambar sampul.
‫Bagus, yang berikutnya adalah sisa gambar.
‫Dan sekarang di sini, kita punya sesuatu yang baru, oke?
‫Karena kami memiliki banyak gambar,
‫dan saya ingin menyimpan gambar tersebut sebagai array.
‫Dan sebenarnya, sebagai array string.
‫Dan cara melakukannya adalah dengan
‫menyederhanakan tentukan di sini sebuah array string, seperti ini.
‫Jadi saya ingin itu tetap bertipe string, tetapi saya
‫ingin itu menjadi array.
‫Jadi array di mana kita memiliki sejumlah string.
‫Dan begitulah cara saya mendefinisikan ini, oke?
‫Dan kita akan menggunakan ini nanti untuk sesuatu yang lain lagi.
‫Jadi kita akan benar-benar memberikan
‫lebih banyak opsi jenis skema daripada hanya
‫satu jenis, dan saat itu kita akan menggunakannya lagi, oke?
‫Untuk saat ini, mari kita lanjutkan,
‫dan bidang berikutnya yang ingin saya tambahkan
‫di sini adalah CreatedAt.
‫Dan bidang CreatedAt pada dasarnya harus berupa
‫stempel waktu yang disetel pada saat pengguna mendapatkan tur baru.
‫Jadi ini di sini tentu saja harus ditambahkan secara otomatis.
‫Sekali lagi, pada saat tur dibuat.
‫Jadi bagaimana kita melakukannya?
‫Pertama-tama, kita atur jenisnya ke Date.
‫Jadi Data adalah tipe data bawaan JavaScript lainnya, jadi kita bisa
‫menggunakannya di sini.
‫Oke, jadi tipenya adalah Date, dan
‫kemudian kita hanya perlu mengatur default,
‫dan defaultnya adalah
‫fungsi bawaan JavaScript Date. sekarang.
‫Dan saya yakin Anda sudah familiar dengan yang satu ini.
‫Jadi ini hanya akan memberi kita cap waktu dalam
‫milidetik, yang pada dasarnya mewakili milidetik saat ini.
‫Baiklah, sekarang di
‫Mongo, ini sekarang segera dikonversi ke tanggal
‫hari ini untuk lebih memahami data ini, oke?
‫Jadi ya, itulah stempel waktu yang dibuat secara otomatis.
‫Dan sekarang akhirnya, kita juga perlu memasukkan serangkaian tanggal.
‫Dan sekarang akhirnya, untuk menyelesaikan
‫untuk saat ini, kami juga ingin dapat mendefinisikan sebuah array tanggal mulai.
‫Jadi startDates, dan sekali lagi, kita cukup mendefinisikan sebuah array, dan kemudian
‫mengatakan bahwa di sana kita menginginkan tanggal.
‫Baiklah, jadi tanggal mulai ini pada dasarnya adalah tanggal
‫yang berbeda saat tur dimulai.
‫Misalnya, kita dapat mengadakan tur yang
‫dimulai pada bulan Desember
‫tahun ini, dan kemudian pada bulan Februari,
‫tahun berikutnya, dan kemudian satu
‫lagi di musim panas, dan tanggal yang
‫berbeda untuk tur yang sama
‫sangat berbeda, katakanlah, contoh tur dimulai pada tanggal yang berbeda.
‫Baiklah, saya harap itu masuk akal.
‫Bagaimanapun, yang ini di sini tidak akan dibuat
‫secara otomatis oleh MongoDB, dan MongoDB kemudian akan secara
‫otomatis mencoba mengurai string yang kita lewati sebagai tanggal menjadi
‫tanggal JavaScript yang sebenarnya.
‫Misalnya, kita dapat memasukkan sesuatu
‫seperti katakanlah 2021, 21 Maret, dan lagi Mongo
‫akan secara otomatis menguraikan
‫ini sebagai tanggal.
‫Anda juga dapat menentukan tanggal.
‫Misalnya, mengatakan 11 dan 32 menit, oke.
‫Atau kita juga bisa memasukkan stempel waktu Unix, jadi stempel
‫waktu seperti dalam format ini di sini.
‫Oke, dan semua format
‫ini, pada dasarnya, Mongo akan mencoba menguraikannya menjadi tanggal.
‫Dan hanya jika tidak bisa, itu akan menimbulkan kesalahan.
‫(menghembuskan napas) Jadi ini banyak pekerjaan.
‫Mari kita simpan di sini.
‫Dan cara kami kemudian dapat mencobanya adalah pergi ke
‫sini ke dev-data kami, di mana kami
‫memiliki tour-simple ini. json, yang merupakan
‫salah satu yang telah kita gunakan di bagian sebelumnya.
‫Baiklah.
‫Jadi yang
‫akan saya lakukan di sini adalah mengambil
‫semua data ini di sini, lalu menggunakannya untuk membuat permintaan baru, oke?
‫Jadi kami ingin membuat permintaan POST baru di sini, dan
‫dengan semua data
‫itu, daripada harus menuliskannya secara manual.
‫Oke, jadi tempel semua ini di sini.
‫Dan sekarang memang, kita tidak perlu ID.
‫Jadi kami membutuhkannya
‫sebelumnya, ketika kami melakukan API berbasis file kami,
‫tapi itu sudah berakhir sekarang, jadi mari kita singkirkan itu.
‫Jadi semua sisa
‫data yang kami tandai yang diperlukan sekarang sebenarnya ada di sini,
‫dan bahkan lebih banyak lagi.
‫Jadi mari kita coba lihat apa yang terjadi saat kita mengirimkan ini.
‫Dan sekarang kami mendapatkan data yang tidak valid yang dikirim.
‫Jadi mari kita pergi ke pengontrol tur kita, dan di
‫sini, tempat kita membuat tur, alih-alih
‫pesan ini, mari kita kembali seperti
‫sebelumnya dan mengirim seluruh kesalahan agar kita
‫melihat apa yang sebenarnya salah.
‫Jadi kirimkan ke sini, oke, dan masalahnya adalah
‫The Snow Adventure sudah kami tentukan.
‫Jadi mari kita singkirkan itu dulu.
‫Ya, jadi di sini kita
‫punya The Snow Adventure, jadi kita harus
‫menghapus ini, dan untuk itu, saya menggunakan API kita sendiri,
‫jadi kita sudah bisa menggunakannya di sini.
‫Jadi yang satu sekarang harus
‫hilang, dan sekarang kita harus dapat menambahkan ini sebagai tur baru.
‫Dan memang, sekarang di sini.
‫Jadi, inilah semua data yang baru saja kita
‫tentukan dalam format yang bagus ini.
‫Jadi yang menarik sekarang adalah melihat
‫stempel waktu yang dibuat.
‫Jadi itulah waktu yang tepat di mana saya merekam video ini.
‫Dan yang satu ini tentu saja secara
‫otomatis dibuat oleh potongan kode yang kita miliki di suatu tempat di sini.
‫Ya, ini.
‫Jadi tanggal itu berasal dari Tanggal ini. sekarang stempel waktu JavaScript
‫itu kemudian secara otomatis mem-parsing ke
‫tanggal yang bagus dan mudah dibaca ini.
‫Lalu di sini kita memiliki array ini.
‫Oke, jadi array ini dan
‫array lain, dan tentu saja, ID yang dibuat secara otomatis, oke?
‫Jadi jika kita datang ke
‫sini sekarang, tentu saja kita memiliki tiga tur.
‫Pertama, yang lain yang tidak begitu lengkap,
‫dan kemudian semua ini.
‫Sekarang yang menarik untuk dilihat di sini
‫adalah bahwa Mongo juga benar-benar memperbarui jenis wisata yang sudah kami miliki.
‫Jadi misalnya, kami memiliki peringkat
‫di sini, tetapi sekarang skema kami
‫benar-benar berubah, kemudian menambahkan rata-rata peringkat
‫ini, dan juga kuantitas peringkat ini, keduanya ke default, dan sebenarnya
‫sama di sini.
‫Itu juga membuat stempel waktu ini.
‫Itu membuat, ya, itu membuat gambar dan tanggal mulai, dengan
‫array kosong ini.
‫Dan itu seperti mengubah semua data ini di sini.
‫Baiklah, jadi sebelum kita mulai melanjutkan dalam sebuah
‫proyek, kita mungkin harus
‫melanjutkan dan menghapus semua data ini di sini.
‫Dan sebenarnya, apa yang akan kita lakukan
‫di video berikutnya, sekarang model kita akhirnya selesai,
‫setidaknya untuk bagian
‫ini, kita akan melanjutkan dan menulis
‫skrip kecil yang secara otomatis akan mengimpor semua
‫tur dari data JSON ini.
‫Oke, jadi dari file JSON ini sebenarnya.
‫Jadi pada dasarnya akan
‫membaca file, mendapatkan semua tur, dan mengimpornya ke database.
‫Baiklah, jadi itulah yang akan kita lakukan selanjutnya, karena
‫itu akan sangat berguna di bagian ini
‫dan juga di masa depan.