‫Narator: Dalam video
‫ini, kami akan menggunakan trik sederhana untuk mencegah
‫pengguna menulis beberapa ulasan untuk tur yang sama,
‫jadi pada dasarnya mencegah ulasan duplikat.
‫Jadi di video terakhir, kami membuat semua
‫ulasan ini untuk menghitung rata-rata.
‫Dan kami membuat beberapa ulasan untuk satu tur,
‫tetapi semuanya dari pengguna yang sama.
‫Tetapi dalam praktiknya, itu tidak masuk akal, bukan?
‫Jadi di dunia nyata, setiap
‫pengguna hanya boleh meninjau setiap tur satu kali.
‫Jadi pada dasarnya, ulasan duplikat terjadi ketika ada
‫ulasan dengan pengguna yang sama dan ID
‫tur yang sama.
‫Dan itulah yang ingin kita hindari agar tidak terjadi.
‫Dan solusi yang jelas
‫di sini adalah dengan hanya menggunakan indeks unik, bukan?
‫Namun, tidak cukup untuk
‫mengatur kedua bidang ini menjadi unik.
‫Dan sebenarnya itu sangat salah,
‫karena itu berarti setiap tur hanya bisa mendapatkan review, dan
‫setiap pengguna hanya bisa menulis satu review.
‫Dan jelas bukan itu yang kita inginkan.
‫Jadi yang kita perlukan adalah keduanya sama-sama
‫unik, sehingga kombinasi antara user dan tour selalu unik.
‫Jadi kedengarannya agak rumit, tapi untungnya bagi
‫kami, itu sebenarnya sangat mudah dicapai dengan indeks.
‫Jadi kita sudah membuat indeks gabungan pada tur sebelumnya, dan sekarang mari kita
‫lakukan hal yang sama di sini pada ulasan.
‫Jadi sekali lagi, di sini setelah definisi skema,
‫dan tentu saja kita masih dalam model tinjauan, bukan?
‫Jadi tinjau, dan itu tidak
‫benar, jadi tinjau indeks titik skema ...
‫Tur diatur ke satu, dan sekali lagi tidak terlalu penting apakah itu satu
‫atau minus satu dalam kasus ini.
‫Dan pengguna juga disetel ke satu, oke.
‫Dan sekali lagi, itu mirip dengan apa
‫yang kita lakukan sebelumnya, tapi di sini kita akan
‫membawanya ke tingkat berikutnya dan sekarang menambahkan objek untuk opsi.
‫Dan opsi di sini yang akan kita atur
‫adalah unique (mengetik) disetel
‫ke true.
‫Dan itu sebenarnya.
‫Ini akan mencapai apa yang kita inginkan.
‫Jadi sekarang setiap kombinasi tur dan pengguna
‫harus selalu unik.
‫Jadi mari kita simpan di
‫sini, atau dua, dan kemudian uji ini sebenarnya.
‫Sekarang ketika saya pertama kali
‫menguji ini, itu sebenarnya tidak langsung berfungsi.
‫Sungguh, itu baru mulai bekerja keesokan harinya, dan saya
‫tidak begitu yakin mengapa, tetapi jika itu terjadi pada Anda,
‫maka jangan khawatir tentang itu, oke.
‫Dan mungkin itu bahkan mungkin terjadi sekarang
‫saat saya merekam video ini.
‫Jadi bagaimanapun, saat ini, seharusnya tidak ada ulasan tentang tur
‫yang sedang kami kerjakan.
‫Jadi hanya untuk memastikan kami masih memiliki
‫peringkat nol dan juga ulasannya kosong.
‫Jadi sekarang mari kita sekali
‫lagi membuat ulasan baru tentang tur ini.
‫Oke.
‫Jadi ini adalah satu ulasan, jadi satu pengguna dan satu ulasan.
‫Jadi tentu saja harus bekerja, tetapi jika sekarang saya mengirim ini
‫lagi dan katakanlah saya menyetelnya ke empat dan berkata oke, maka
‫ini seharusnya tidak diizinkan untuk bekerja, oke.
‫Ingatlah bahwa itu mungkin masih
‫berfungsi karena masalah yang saya katakan sebelumnya, oke.
‫Jadi terkadang indeks semacam ini tidak segera disetel.
‫Oh, tapi sebenarnya, dalam kasus saya ini langsung berhasil.
‫Jadi kita mendapatkan kesalahan kunci duplikat pada indeks ini di sini,
‫dan itulah indeks yang baru saja kita buat sebelumnya.
‫Jadi mari kita lihat juga di sini di Kompas.
‫Jadi di sini sebenarnya tidak, jadi
‫saya akan melakukannya seperti yang saya lakukan sebelumnya
‫dan menyambungkan kembali pada dasarnya.
‫Jadi pergi ke terbaru, lalu sambungkan di sini.
‫alam...
‫Kemudian...
‫Tentu saja tur,
‫dan indeks kami di sini sekarang adalah empat ini.
‫Dan itulah yang baru
‫saja kita buat, atau sebenarnya tidak (tertawa), oke.
‫Jadi untuk beberapa alasan, itu tidak ada
‫di sini, jadi itulah yang saya
‫katakan sebelumnya, tetapi tidak masalah karena sebenarnya ini berfungsi dalam kode kita.
‫Oke, jadi kami tidak dapat membuat dua ulasan yang
‫berasal dari pengguna yang sama, oke.
‫Tetapi jika Anda sekarang masuk
‫sebagai orang lain, maka kami pasti akan dapat memposting ulasan ini.
‫Jadi mari kita lihat pengguna apa yang bisa kita gunakan sekarang.
‫Jadi mari kita semua pengguna di sini, yang
‫saya tidak bisa karena saya bukan admin (tertawa), oke.
‫Jadi saya lupa tentang bagian
‫itu, jadi saya hanya akan mengambil ini dari Kompas.
‫Terkadang itu lebih mudah.
‫Jadi ini panduan, pengguna (seru),
‫jadi mari kita gunakan Eduardo ini di sini atau apa.
‫Jadi mari kita masuk sebagai orang ini, sebagai pengguna ini.
‫Yap, dengan sukses, dan sekarang kita
‫harus diizinkan untuk membuat ulasan, dan memang ini dia, oke.
‫Dan jika sekarang
‫kami memperbarui ini, maka kami memiliki dua peringkat, bagus.
‫Sekarang tinggal test lagi, jadi kalau
‫kita kirim lagi tidak bisa karena lagi-lagi
‫kita error duplikat.
‫Luar biasa.
‫Hanya ada satu hal lagi yang
‫ingin saya tunjukkan kepada Anda, dan untuk itu, saya
‫akan masuk sebagai orang lain, oke, sehingga saya dapat membuat ulasan lain.
‫Jadi kali ini, aku akan menjadi Max Smith ini.
‫Jadi mari kita masuk.
‫(klik mouse)
‫Oke, jadi sekarang saya resmi Max, dan
‫saya akan dapat memposting ulasan ini.
‫Jadi dengan
‫lima, saya bisa
‫melakukannya, dan sekarang saya ingin melihat rata-ratanya.
‫Oke, jadi sekarang ini 4. 6666, yang tentu
‫saja tidak terlihat bagus.
‫Dan kita bisa memperbaiki ini di ujung depan.
‫Misalnya ketika kita meminta data ini dari
‫API dan kemudian menampilkannya, kita
‫bisa di front end kemudian melakukan pembulatan ini.
‫Tapi sebenarnya, saya ingin melakukannya di sini di bagian
‫belakang sehingga pengguna akhir sudah mendapatkan nilai akhir yang dibulatkan ini, yang
‫dalam hal ini adalah 4. 7, kan?
‫Dan untuk melakukan itu, saya akan menunjukkan kepada Anda fitur
‫kecil baru di Mongoose yang belum kami gunakan.
‫Jadi mari kita pergi ke model tur
‫kita, dan rata-rata itu, jadi
‫di sini.
‫Jadi sekarang, kita bisa menggunakan fungsi setter.
‫(mengetik) Jadi set
‫dan fungsi ini akan dijalankan setiap kali
‫nilai baru disetel untuk bidang ini, oke.
‫Jadi di sini, kami biasanya menentukan fungsi panggilan balik, yang
‫menerima nilai saat ini.
‫Dan dalam hal ini, pada dasarnya mengembalikan nilai ini,
‫tetapi dibulatkan.
‫Jadi kami menggunakan math dot round untuk nilai saat ini, tetapi
‫masalah dengan math dot round
‫adalah membulatkan nilai ke bilangan bulat.
‫Jadi misalnya, jika kita memiliki sesuatu
‫seperti ini, maka akan dibulatkan menjadi lima, oke.
‫Dan bukan itu yang kami inginkan.
‫Kami ingin dibulatkan menjadi 4. 7.
‫Jadi kita akan menggunakan
‫trik di sini, yang cukup umum, jadi kalikan ini dengan 10, dan dengan
‫itu, kita akan mendapatkan 46. 666, dan
‫kemudian dibulatkan menjadi 47.
‫Jadi, kami membagi hasilnya dengan 10 lagi, dan itu
‫adalah 4. 7.
‫Baiklah, dan itu sebenarnya.
‫Jadi sekali lagi, fungsi setter di
‫sini yang akan dijalankan setiap kali ada nilai
‫baru untuk bidang rata-rata peringkat.
‫Jadi hanya untuk menguji ini, mari kita perbarui ulasan
‫terakhir yang kita tambahkan ini, yang memiliki
‫lima, dan tetap pada lima.
‫Jadi semua yang pada dasarnya ingin kita lakukan adalah
‫menjalankan kembali fungsi yang menciptakan rata-rata ini.
‫Jadi jika saya melakukan ini sekarang dan sekarang mendapatkan tur saya,
‫kita harus mendapatkan 4. 7 di sini sebagai rata-rata.
‫Dan ya, ini dia.
‫Hebat, dan itu sebenarnya sudah untuk video ini.
‫Jadi kami membuat fungsi penyetel yang bagus ini,
‫dan kami membuat indeks gabungan unik ini di sini
‫untuk memastikan bahwa satu pengguna
‫tidak dapat menulis banyak ulasan untuk tur yang sama.