‫Instruktur: Sejauh ini
‫di bagian ini, kita telah berbicara
‫tentang model Mongoose, operasi CRUD
‫dengan Mongoose, kita melakukan banyak query, dan
‫kita belajar tentang pipa agregasi, tapi sekarang untuk
‫beberapa video berikutnya, mari kita kembali
‫ke data kita model dan pelajari beberapa fitur super berguna
‫yang ditawarkan Mongoose kepada kami untuk memodelkan data kami.
‫Dan yang pertama akan kita
‫bicarakan adalah properti virtual.
‫Jadi mari kita buka model tur kita di sini.
‫Baiklah, sekarang properti virtual pada dasarnya adalah bidang yang dapat
‫kita definisikan pada skema
‫kita, tetapi itu tidak akan dipertahankan.
‫Jadi mereka tidak akan disimpan ke dalam database
‫untuk menghemat ruang kita di sana.
‫Dan sebagian besar
‫waktu, tentu saja, kami ingin benar-benar menyimpan data kami
‫ke database, tetapi properti virtual sangat masuk
‫akal untuk bidang yang dapat diturunkan dari satu sama lain.
‫Misalnya konversi dari mil ke kilometer, tidak masuk akal
‫untuk menyimpan dua bidang ini
‫dalam database jika kita dapat dengan mudah
‫mengonversi satu ke yang lain, bukan?
‫Oke, sekarang mari kita definisikan properti virtual yang berisi
‫durasi tur dalam hitungan minggu.
‫Dan pada dasarnya itu adalah
‫bidang yang dapat dengan mudah kita ubah dari durasi
‫yang sudah kita miliki dalam beberapa hari, bukan?
‫Dan inilah cara kerjanya.
‫Kami mendefinisikan properti virtual itu pada skema
‫tur, dan kami katakan, tourSchema. virtual dan kemudian nama
‫properti virtual.
‫Jadi sebut saja durasi minggu, dan
‫kemudian di sana kita perlu mendefinisikan metode get.
‫Dan itu hanya karena properti virtual di
‫sini pada dasarnya akan dibuat
‫setiap kali kita mendapatkan beberapa data dari database.
‫Jadi fungsi get ini di sini disebut getter.
‫Sekarang di sini kita melewati sebuah fungsi,
‫dan sebenarnya fungsi
‫panggilan balik ini akan menjadi fungsi nyata, jadi bukan fungsi panah,
‫dan saya akan menjelaskan kepada Anda mengapa dalam sedetik.
‫Sekarang bagaimana kita pada dasarnya
‫mendefinisikan properti virtual?
‫Yah itu sangat sederhana, yang harus kami katakan
‫adalah kami ingin mengembalikan ini, . durasi dalam hal ini,
‫dibagi tujuh.
‫Jadi begini cara kita menghitung durasi dalam minggu, jadi
‫durasi dalam hari dibagi tujuh karena
‫ada tujuh hari dalam seminggu, dan
‫begitulah durasi dalam minggu.
‫Misalnya, jika sebuah tur memiliki tujuh hari, maka
‫tentu saja akan menjadi satu minggu.
‫Sekarang saya menggunakan fungsi reguler ini
‫di sini karena ingat, fungsi panah tidak mendapatkan
‫kata kunci disknya sendiri.
‫Di sini kita sebenarnya membutuhkan kata kunci
‫disk karena kata kunci disk dalam
‫hal ini akan menunjuk ke dokumen saat ini.
‫Dan biasanya ketika kita ingin
‫menggunakan ini, maka kita harus selalu menggunakan fungsi biasa.
‫Jadi benar-benar di mana-mana di Mongoose,
‫saya akan selalu menggunakan fungsi reguler yang
‫biasa kita gunakan.
‫Jadi, simpan di sini, dan hanya itu.
‫Begitulah cara kami mendefinisikan durasi
‫minggu, yang tidak akan disimpan dalam
‫database, tetapi hanya akan ada segera setelah kami mendapatkan datanya.
‫Sekarang sebenarnya itu belum akan ada di sana,
‫karena ada satu bagian yang hilang di sini, jadi
‫izinkan saya mulai dengan menunjukkannya kepada Anda.
‫Jadi jika kami mencoba untuk mendapatkan
‫semua tur, Anda akan melihat bahwa durasi berminggu-minggu
‫tidak ditemukan di sini.
‫Dan itu karena kita perlu secara eksplisit mendefinisikan
‫dalam skema kita bahwa kita menginginkan properti virtual dalam
‫output kita.
‫Dan jadi ingat bagaimana saya mengatakan itu ke luwak ini. skema, kita tidak hanya dapat
‫meneruskan objek dengan
‫definisi skema itu sendiri,
‫tetapi juga objek untuk opsi skema.
‫Jadi mari kita tambahkan di
‫sini di akhir, jadi objek pertama di sini adalah definisi
‫skema, dan sekarang objek kedua untuk opsi.
‫Dan yang perlu kita tentukan di sini adalah dua
‫properti JSON di sini, dan apa yang
‫kami katakan adalah bahwa setiap kali data benar-benar dikeluarkan sebagai JSON,
‫kami ingin virtual menjadi true.
‫Jadi pada dasarnya virtual menjadi bagian dari output.
‫Dan sekarang saya menduplikasi ini karena kami
‫juga ingin mengatakan untuk menolak.
‫Jadi pada dasarnya ketika data dikeluarkan
‫sebagai objek.
‫Jadi jika kita sekarang kembali ke sini, kita
‫seharusnya dapat melihat durasi minggu.
‫Mari kita tunggu, dan memang, ini dia.
‫Jadi lima hari, dan jadi 0. 71 minggu.
‫Di sini kita punya tujuh hari, jadi itu satu minggu.
‫Oke, jadi itu benar-benar berfungsi, bagus.
‫Sekarang satu hal yang
‫perlu kita ingat adalah bahwa kita tidak dapat menggunakan
‫properti virtual ini di sini dalam kueri, karena secara
‫teknis mereka bukan bagian dari database.
‫Jadi kita
‫tidak bisa mengatakan, misalnya, wisata. temukan di mana durasi minggu sama dengan satu.
‫Itu tidak akan berhasil, sekali lagi karena properti
‫ini sebenarnya bukan bagian dari database.
‫Sekarang tentu saja kita juga dapat
‫melakukan konversi ini setiap kali setelah kita
‫mengkueri data, misalnya, seperti di
‫pengontrol, tetapi itu bukan praktik terbaik hanya karena
‫kita ingin mencoba menjaga logika bisnis
‫dan logika aplikasi terpisah jauh. mungkin, ingat?
‫Jadi, itulah keseluruhan pembicaraan tentang model gemuk dan
‫pengontrol tipis yang telah kita bicarakan sebelumnya yang mengatakan bahwa
‫kita harus memiliki
‫model dengan logika bisnis sebanyak yang dapat kita berikan
‫kepada mereka dan pengontrol tipis
‫dengan logika bisnis sesedikit mungkin.
‫Jadi, properti virtual seperti ini sebenarnya adalah contoh bagus
‫tentang bagaimana kita bisa mencapai
‫arsitektur semacam itu.
‫Jadi mengetahui durasi dalam minggu
‫adalah logika bisnis karena berkaitan dengan bisnis
‫itu sendiri, bukan dengan hal-hal seperti permintaan
‫atau tanggapan, jadi kami melakukan perhitungan tepat
‫di model tempatnya dan bukan
‫di pengontrol.