‫Instruktur: Sekarang mari
‫kita istirahat sejenak dari membangun
‫API kita dan membuat skrip kecil
‫yang menyenangkan yang akan mengimpor data tur dari
‫file JSON kita ke database MongoDB.
‫Dan saya tidak
‫begitu yakin apakah saya harus memasukkan video ini
‫ke dalam kursus atau apakah saya harus datang
‫dengan skrip yang sudah ada di file starter kursus.
‫Tapi saya pikir saya pikir itu adalah latihan kecil yang
‫bagus dan jadi saya memasukkannya.
‫Jadi, bagaimanapun, mari kita mulai sekarang.
‫Jadi, pada dasarnya kita akan membuat
‫skrip yang hanya akan memuat data dari file JSON seperti
‫yang baru saja saya katakan ke dalam database.
‫Dan skrip ini sepenuhnya
‫independen dari aplikasi ekspres kami lainnya.
‫Jadi kami akan menjalankan ini sepenuhnya
‫secara terpisah dari baris komentar hanya untuk mengimpor semuanya sekali.
‫Oke, jadi biarkan saya membuat
‫skrip di sini di folder data.
‫Jadi file
‫baru,
‫impor, data dev. js.
‫Baiklah.
‫Jadi, apa yang akan kita butuhkan untuk ini?
‫Kita akan membutuhkan luwak tentu
‫saja jadi mari kita mulai dengan itu.
‫Atau sebenarnya, mari kita lanjutkan ke server. js file dan
‫salin barang
‫ini karena mengapa menulisnya lagi.
‫Jadi mari kita salin semuanya
‫dan kemudian hapus apa yang tidak kita butuhkan.
‫Jadi kami tidak membutuhkan aplikasi ekspres kami, kami juga
‫membutuhkan file . env
‫karena kita membutuhkan variabel
‫lingkungan kita untuk dapat terhubung ke database lagi, oke.
‫Dan kita perlu menyambungkan ke database dalam
‫skrip ini lagi karena skrip ini berjalan sepenuhnya
‫independen dari aplikasi ekspres.
‫Ini hanya akan berjalan sekali di awal.
‫Selanjutnya kita membutuhkan akses ke modul file system karena
‫tentunya kita ingin membaca file JSON.
‫Jadi membutuhkan fs dan
‫akhirnya kita juga membutuhkan akses ke model tur karena
‫model tur
‫adalah tempat kita ingin menulis tur, bukan?
‫Jadi, tur sama dan
‫sekarang mari kita cari jalan
‫di sana jadi dari tempat kita
‫berada sekarang kita perlu naik satu tingkat.
‫Dan apa yang terjadi di sini dengan kutipan ini?
‫Baiklah, jadi naik satu
‫level dan kami berada di data dev.
‫Jadi kita perlu naik level lagi agar
‫kita berada di folder utama.
‫Dan dari sana kita masuk ke model
‫dan ke model tur.
‫Oke dan itu harusnya untuk pengaturan.
‫Sekarang mari kita mulai dengan membaca file.
‫Jadi, baca file JSON dan itu
‫seharusnya cukup sederhana.
‫Jadi wisatanya ada di fs. readfile dan kita
‫dapat menggunakan versi sinkron tentunya.
‫Dan katakan saja tur sederhana. json, oke.
‫Dan
‫kemudian, juga pengkodean.
‫Jadi, pengkodean file, utf delapan.
‫Berikan simpanan.
‫Jadi sekarang kita bisa menulis fungsi
‫sebenarnya yang akan mengimpor data ke database.
‫Jadi impor data ke database.
‫Oke, seperti ini.
‫Jadi mari kita buat fungsi ini.
‫Impor data, impor data,
‫ya.
‫Dan itu akan menjadi
‫dan fungsi async yang tidak memerlukan argumen
‫apa pun dan jadi mari kita gunakan lagi blok try catch di sini.
‫Dan di sini saya hanya akan mencatatnya ke konsol
‫jika ada kesalahan,
‫hanya untuk mengetahui apa yang terjadi dalam kasus itu.
‫Dan sekarang
‫di sini, apa yang akan kita lakukan sangat sederhana.
‫Kami hanya
‫akan menunggu, tur. membuat.
‫Jadi kami sudah menggunakan tur. buat dan
‫kita lewati objek saat itu kan?
‫Tetapi metode create juga dapat menerima array objek.
‫Dan dalam
‫hal ini ia hanya akan membuat dokumen
‫baru untuk setiap objek dalam array.
‫Jadi, sangat sederhana,
‫yang harus kita lakukan adalah menentukan data tur kita di sini, bukan?
‫Dan sebenarnya itu tidak 100% benar karena
‫ingat bahwa ini adalah JSON.
‫Jadi kita harus terlebih dahulu mengubahnya
‫menjadi objek JavaScript menggunakan json. mengurai.
‫Oke dan sekarang kita benar-benar memiliki
‫sebuah array dari objek
‫JavaScript yang sekarang dapat kita masukkan ke dalam metode create, oke.
‫Dan jika
‫itu berhasil, maka baris berikutnya
‫akan dieksekusi dan di sini kita dapat mengatakan bahwa
‫data berhasil dimuat, baiklah.
‫Dan ini seharusnya sudah melakukan pekerjaan.
‫Sekarang bagaimana dengan data yang sudah ada di database?
‫Kami juga dapat membuat
‫cara mudah untuk menghapus semua data itu secara bersamaan.
‫Jadi mari kita lanjutkan dan lakukan itu juga.
‫Jadi, hapus semua data
‫dari koleksi, katakanlah.
‫Dan warna kuning aneh yang Anda lihat
‫di sini sebenarnya berasal dari ekstensi yang saya pasang di sini.
‫Dan untuk menghilangkannya,
‫saya hanya akan menulis database lagi, oke.
‫Jadi hapus data dan
‫lagi ini akan menjadi fungsi async tanpa argumen
‫apa pun.
‫Dan biarkan saya benar-benar menyalin kode ini di sini.
‫Jadi, hapus
‫dan sekarang tentang penghapusan
‫itu sendiri kita dapat menggunakan fungsi hapus banyak.
‫Oke dan sebenarnya saya
‫menunjukkan yang ini kepada Anda di intro MongoDB, bukan?
‫Di mana kita bisa menggunakan delete
‫many dan kemudian tidak memasukkan apa pun di
‫sana dan
‫itu kemudian akan menghapus semua dokumen dalam koleksi tertentu, bukan?
‫Dan luwak pada dasarnya
‫menerapkan fungsi yang sama di sini pada model, oke.
‫Jadi dalam
‫hal ini, model tur memiliki akses ke metode delete many ini
‫yang kemudian akan melakukan
‫hal yang sama persis seperti yang dilakukan delete many di MongoDB asli, bukan?
‫Jadi, ingatlah bahwa luwak hanyalah,
‫seperti lapisan abstraksi di atas MongoDB.
‫Itulah mengapa tidak menggunakan fungsi yang sama persis
‫tetapi masih memberi kita akses ke beberapa yang serupa atau
‫yang sebenarnya memiliki nama yang sama.
‫Jadi hapus banyak sebenarnya memiliki
‫nama yang sama dengan fungsi asli MongoDB, oke?
‫Jadi sekali lagi, yang akan dilakukan
‫adalah melanjutkan dan menghapus semua dokumen dalam koleksi tur.
‫Jadi, kami memiliki dua fungsi kami di
‫sini tetapi jika kami sekarang benar-benar menjalankan file ini
‫maka tidak akan terjadi apa-apa.
‫Dan itu
‫karena kami tidak memanggil fungsi-fungsi ini di mana pun, bukan?
‫Sekarang kita
‫dapat melanjutkan dan menulis sesuatu seperti mengimpor data di sini dan kemudian
‫cukup memanggil fungsinya di sini,
‫tetapi saya ingin membuat ini sedikit lebih menyenangkan.
‫Jadi sekarang mari kita belajar
‫sedikit tentang berinteraksi dengan baris perintah, oke.
‫Jadi saya benar-benar
‫akan melanjutkan dan menjalankan file ini tanpa memanggil fungsi-fungsi ini.
‫Tapi sebaliknya saya
‫akan masuk ke proses konsol. argv, oke.
‫Supaya kita bisa melihat prosesnya seperti apa. argv sebenarnya adalah
‫agar kita dapat menggunakannya.
‫Baiklah.
‫Biarkan saya membuka terminal lain di sini dan
‫kemudian saya akan menggunakan
‫node, masuk ke data dev
‫lalu ke
‫data dan kemudian di sana impor data dev.
‫Dan kami mendapatkan beberapa kesalahan di sini.
‫Mari kita lihat di mana.
‫Ah, ya jadi karena ini, nama
‫file ini.
‫Jadi saya kira kita harus menentukan jalur ke sana pada dasarnya.
‫Jadi mari kita jalankan yang ini lagi
‫dan lagi kita memiliki kesalahan ini.
‫Dan ya, tentu saja saya mendapatkan kesalahan ini.
‫Itu yang bodoh.
‫Ingat bagaimana saya
‫memberi tahu Anda bahwa titik ini di sini selalu relatif
‫dari folder tempat aplikasi simpul sebenarnya dimulai.
‫Dan itulah folder rumah.
‫Jadi pada dasarnya kita mencari
‫file ini di folder home, oke.
‫Jadi yang harus saya gunakan adalah nama dir, variabel yang
‫tersedia untuk kita di mana saja.
‫Jadi seperti ini.
‫Baiklah.
‫Berikan lagi
‫penyimpanan dan bersihkan konsol dan jalankan lagi.
‫Dan sekarang berhasil.
‫Dan inilah
‫hasil dari konsol ini. log yang kita miliki di sini,
‫Jadi proses. argv
‫dan pada dasarnya itu
‫adalah larik dari dua argumen ini untuk menjalankan proses simpul ini.
‫Jadi, ini pada dasarnya
‫di mana perintah node berada.
‫Jadi ini setara
‫dengan simpul ini dan kemudian
‫yang kedua, jadi jalur ke file ini sebenarnya di sini, oke.
‫Jadi mari kita hentikan ini
‫di sini dan tambahkan semacam opsi di sini.
‫Jadi saya
‫akan menulis, tanda hubung, tanda hubung,
‫dan jadi saya yakin Anda telah melihat
‫sesuatu seperti ini berkali-kali sebelumnya.
‫Misalnya, ketika kita menyimpan sebuah paket sebagai dependensi dev,
‫kita melakukannya seperti ini.
‫Simpan dev, jadi kami menggunakan
‫jenis format yang sama untuk menentukan opsi.
‫Oke jadi, tanda hubung dan
‫kemudian string apa pun yang kita masukkan di sini.
‫Jadi saya memilih untuk pada dasarnya menentukan
‫opsi impor seperti ini.
‫Dan jadi Anda melihat bahwa
‫sekarang argumen ketiga adalah tanda hubung impor, oke?
‫Dan itu berarti kita sekarang dapat
‫melanjutkan dan pada dasarnya menggunakan data ini
‫di
‫sini untuk menulis aplikasi baris perintah yang sangat sederhana pada
‫dasarnya yang akan mengimpor data saat kita menentukan opsi
‫ini dan akan menghapus
‫data saat kita menentukan opsi hapus, semua Baik?
‫Jadi, mari kita lakukan itu.
‫Jadi,
‫jika proses. argv dan ini adalah
‫array
‫dan kami ingin yang ketiga.
‫Jadi nol, satu, dua.
‫Jadi jika elemen tersebut sama dengan import well,
‫maka kita ingin menjalankan import data.
‫Benar?
‫Jika...
‫Proses. argv two sama,
‫untuk menghapus
‫maka kita ingin menjalankan delete
‫data.
‫Dan itu saja.
‫Jadi, itu seharusnya
‫memberi kita hasil yang kita cari.
‫Mari kita selesaikan ini di sini.
‫Jadi sekarang mari kita jalankan perintah
‫di sini dengan delete untuk menghapus semua data yang
‫kita miliki di database.
‫Jadi mari kita coba itu.
‫Itu melakukan
‫sesuatu dan data berhasil dihapus.
‫Jadi mari kita lihat itu sekarang.
‫Dan jika kita menjalankan sekarang ini mendapatkan semua rute
‫wisata maka memang kita memiliki hasil nol.
‫Jadi, semua tur kami sekarang hilang.
‫Jadi itu berhasil.
‫Sekarang proses ini di sini pada dasarnya masih berjalan.
‫Jadi mari kita
‫cepat memperbaikinya, yang agak mudah.
‫Jadi, itu yang baru yang belum kami gunakan.
‫Yang merupakan proses. keluar, oke?
‫Sekarang proses ini. exit adalah semacam cara agresif
‫untuk menghentikan aplikasi
‫tetapi dalam hal ini tidak masalah
‫karena itu benar-benar hanya skrip yang sangat
‫kecil yang kami jalankan di sini dan bukan aplikasi nyata, bukan?
‫Mari kita salin hal yang
‫sama di sini ke fungsi data impor kita.
‫Dan sekarang aku akan berhenti.
‫Dan hanya untuk menunjukkan bahwa itu
‫berfungsi, saya
‫akan menjalankannya lagi sehingga
‫data berhasil dihapus dan kemudian keluar dari proses.
‫Baiklah.
‫Dan sekarang saatnya untuk benar-benar menjalankan fungsi yang
‫kami minati sejak awal.
‫Jadi dengan bendera impor, pada dasarnya.
‫Jadi opsi impor.
‫Jadi mari kita jalankan
‫itu dan mari kita lihat apakah itu benar-benar berfungsi.
‫Dan tidak.
‫Jadi mengapa begitu?
‫Jadi ini memberitahu kita di sini tur harus memiliki ukuran grup.
‫Jadi dari mana itu?
‫Dan kami melihat banyak kesalahan validasi di sini.
‫Jadi pasti ada yang salah di sini.
‫Jadi ya,
‫kami memiliki gambar sampul, kami memiliki deskripsi tur.
‫Kami memiliki harga.
‫Yah, itu aneh.
‫Ukuran grup maksimum,
‫biarkan saya benar-benar memeriksa apakah ada yang terjadi di sini.
‫Sebenarnya kami memiliki sembilan tur
‫di sini dan saya pikir hanya sembilan yang kami miliki.
‫Dan bagi saya sepertinya itu benar-benar berhasil.
‫Tapi mari kita lihat sekilas data kita di sini.
‫Jadi, hanya untuk mencari tahu mengapa ini benar-benar terjadi.
‫Jadi wisata sederhana di sini dan
‫begitu kita
‫sudah bisa melihat, sebenarnya masalah yang terjadi.
‫Jadi kami memiliki semua
‫tur ini jadi yang asli.
‫Tapi kemudian dari bagian terakhir,
‫kami memiliki ketiganya
‫di sini yang kami tambahkan menggunakan API berbasis file kami.
‫Jadi, ingat itu?
‫Jadi saat itu kami hanya menentukan nama, durasi dan
‫kesulitan dan tidak ada yang lain.
‫Jadi sekarang
‫skrip kami mencoba mengimpor tiga tur ini.
‫Tapi tentu saja, kami tidak tertarik
‫sama sekali dan jadi mari kita simpan ini di sini, oke.
‫Kemudian keluar dari proses ini
‫dan sebenarnya proses ini. exit bisa berada di
‫luar blok try catch dan berada di sini pada
‫akhir fungsi.
‫Sehingga tidak peduli
‫ada kesalahan atau tidak akan selalu keluar begitu saja dari proses.
‫Baiklah.
‫Jadi mari kita hapus semuanya.
‫Baiklah, kosongkan konsol lagi.
‫Sekarang impor, dan
‫ya.
‫Jadi data berhasil dimuat.
‫Seperti memang di sini kita lagi.
‫Jadi sekarang ini berfungsi 100%,
‫kami memiliki data yang dapat kami mulai kerjakan
‫sekarang dan, ya.
‫Pekerjaan kita dengan yang satu ini sudah selesai.
‫Jadi, fungsi kecil yang bagus, atau skrip
‫kecil yang bagus sebenarnya.
‫Saya harap semuanya masuk akal bagi Anda
‫dan ya itu semacam latihan yang menyenangkan untuk Anda juga.
‫Bagaimanapun, sampai jumpa di
‫video berikutnya di mana kami akhirnya mulai menggunakan semua data ini
‫dan untuk meningkatkan API
‫kami dengan menerapkan beberapa fitur bagus.