Cara CRUD dengan Node.js dan MongoDB

Cara CRUD dengan Node.js dan MongoDB

MongoDB adalah salah satu penyimpanan data NoSQL pertama, dan merupakan penyimpanan data NoSQL paling populer saat ini. Runtime JavaScript Node.js terus mendominasi dalam pengembangan back-end. Bersama-sama mereka membuat tumpukan teknologi yang sangat fleksibel dan dinamis.

Seperti yang akan Anda lihat, Node.js dan MongoDB memungkinkan Anda untuk dengan cepat mengimplementasikan fungsionalitas aplikasi penting seperti operasi CRUD (membuat, membaca, memperbarui, dan menghapus). Pada artikel ini, kita akan melihat dasar-dasar CRUD, menggunakan driver Node.js MongoDB terbaru (versi 3.6+).

Pengaturan Node.js dan MongoDB

Anda harus menginstal Node.js dan MongoDB di sistem Anda, dan baris perintah dengan perintah curl tersedia. (Jika Anda menggunakan versi Linux, MacOS, atau Windows 10 sejak 2018, kemungkinan besar Anda memiliki curl.)

Anda dapat mengunduh MongoDB untuk OS Anda di sini. Setelah diunduh, Anda dapat menginstalnya sebagai layanan atau menjalankannya sebagai executable. Either way, pastikan MongoDB berjalan dengan membuka baris perintah dan menjalankan perintah mongo. (Anda mungkin perlu menambahkan perintah ke jalur Anda jika Anda tidak menginstal sebagai layanan.) Ini memberi Anda akses ke instans MongoDB yang berjalan di sistem Anda.

Selanjutnya, pastikan Anda telah menginstal Node.js dan npm. Pada baris perintah, ketik node -v. Jika Node.js diinstal, Anda akan mendapatkan nomor versi. Jika tidak, buka halaman unduh Node.js dan instal Node di komputer Anda. Curl memungkinkan Anda untuk melakukan permintaan HTTP sederhana dari baris perintah. Misalnya, jika Anda menjalankan curl www.google.com, Anda akan menerima markup dari halaman utama Google.

Buat proyek Node.js

Sekarang buka folder yang nyaman di mana Anda akan membuat proyek baru. Ketik npm init. Untuk nama proyek, gunakan node-mongo-intro. Anda dapat menerima default lainnya. [JavaScript adalah bahasa yang paling banyak digunakan di dunia. Baik Anda seorang pengembang JavaScript pemula, menengah, atau lanjutan, Anda akan menguasai keterampilan baru dengan kursus sembilan bagian ini dari PluralSight. ]

Sekarang tambahkan dependensi yang Anda butuhkan. Di direktori proyek yang baru saja Anda buat, ketik npm install mongodb polka –save. Ini akan menginstal driver Node.js untuk MongoDB (memungkinkan proyek Anda mengakses MongoDB) dan server HTTP Polka, yang akan Anda gunakan untuk menangani permintaan HTTP. Siap bekerja untuk peran keamanan utama dengan pelatihan dan sertifikasi Cisco

Baca Juga:  Pengertian Bahasa Pemrogaman , Fungsi, Tingkatan, Contoh, Generasi dan Pengelompokannya

Edit file package.json untuk menyertakan skrip awal, seperti pada Listing 1.

Listing 1. A start script

"scripts":{
    "test":"echo "Error: no test specified" && exit 1",
    "start":"node src/index"// <-- add this line
  },

Sekarang buat /node-mongo-intro/src/index.js, dan masukkan konten Listing 2 ke dalamnya.

Listing 2. HTTP test in index.js

const polka =require('polka');

polka()
  .get('/create',(req, res)=>{
    res.end(`works`);
  })
  .listen(3000, err =>{
    if(err)throw err;
    console.log(`> Running on localhost:3000`);
  });

Sekarang mulai server dengan npm run start. Server akan mendengarkan pada port 3000. Anda dapat mengujinya dengan curl http://localhost:3000/create. Jika ya, Anda akan melihat respons (bersama dengan beberapa info permintaan ikal) dari “berfungsi.”

Masukkan catatan di MongoDB

Sekarang kita akan melakukan penyisipan sederhana. Ini adalah C di CRUD. Perbarui file index.js agar terlihat seperti Listing 3.

Listing 3. Sisipan sederhana

const polka =require('polka');
const{MongoClient}=require("mongodb");

polka()
  .get('/create',(req, res)=>{
    const client =newMongoClient("mongodb://localhost:27017");
    async function run(){
      try{
        await client.connect();
        const database = client.db("intro");
        const collection = database.collection("quotes");

        const result = await collection.insertOne({"quote":"Life is what happens to you while you're busy making other plans."});
        res.end(JSON.stringify(result));
      }catch(e){
        console.log("Error: "+ e);
      }finally{
        await client.close();
      }
    }
    run().catch(console.dir);
  })
  .listen(3000, err =>{
    if(err)throw err;
    console.log(`> Running on localhost:3000`);
  });

Kode di Listing 3 membuka koneksi ke instance MongoDB di sistem lokal Anda, lalu menentukan database (“intro”) dan koleksi (“quotes”). Koleksi dianalogikan dengan tabel dalam database relasional.

Jalankan sisipan

Pertama, hentikan dan mulai ulang server node dengan menekan Ctrl-C. Kemudian jalankan perintah ini di baris perintah:

npm run startcurl http://localhost:3000/create

Verifikasi sisipan

Satu hal yang akan Anda perhatikan jika Anda berasal dari latar belakang SQL adalah bahwa kami tidak membuat tabel dan skema sebelum kami melakukan pekerjaan ini. Kami bahkan tidak membuat database yang kami gunakan. MongoDB melakukan semua ini untuk kita, dan dapat menerima segala jenis dokumen nilai kunci terstruktur ke dalam koleksi.

Baca Juga:  Cara Install Nginx,MySQL, PHP v7 (LEMP) Stack pada CentOS 7

Buka shell mongo dengan mongo, dan masukkan perintah use intro. Ini beralih ke database intro yang dibuat secara otomatis. Sekarang masukkan perintah db.quotes.find(), dan Anda akan melihat bahwa record telah dimasukkan. Perhatikan bahwa MongoDB secara otomatis membuat ID unik pada bidang “_id”. Anda dapat menimpa ini dengan menentukan sendiri pada dokumen.

Ambil dokumen di MongoDB

Sekarang mari kita keluarkan kembali dokumen itu. Tambahkan pemetaan .get() yang terlihat di Listing 4. Ini adalah R di CRUD.

Listing 4. Ambil dokumen

.get('/retrieve',(req, res)=>{
    const client =newMongoClient("mongodb://localhost:27017");
    async function run(){

      try{
        await client.connect();
        const database = client.db("intro");
        const collection = database.collection("quotes");

        const cursor = collection.find({},{});

        let items =[];
        await cursor.forEach(function(doc){
          items.push(doc);
        });
        res.end(JSON.stringify(items));
      }catch(error){
        console.warn("ERROR: "+ error);
        if(errCallback) errCallback(error);
      }finally{
        await client.close();
      }
    }
    run().catch(console.dir);
  })

Listing 4 terhubung dengan cara yang sama seperti Listing 3, lalu mengeluarkan perintah find, dengan kueri kosong. Ini berarti cocok dengan semua dokumen. Selanjutnya dibutuhkan respons dan menyusunnya ke dalam array untuk dikirim kembali ke klien.

Perhatikan bahwa operasi kursor tidak sinkron, seperti operasi collection.insertOne dari Listing 3. Kami menggunakan kata kunci menunggu untuk menangani ini tanpa panggilan balik bersarang. Uji titik akhir baru (setelah berhenti dan memulai server lagi) dengan curl http://localhost:3000/retrieve dan Anda akan melihat koleksi dikembalikan.

Perbarui dokumen di MongoDB

Sekarang untuk U di CRUD. Ini ditangani dalam Listing 5.

Baca Juga:  Oracle Menambahkan Layanan Manajemen Java ke Jajaran Layanan Infrastruktur Cloud-nya

Listing 5. Memperbarui dokumen

.get('/update',(req, res)=>{
    const client =newMongoClient("mongodb://localhost:27017");
    async function run(){
      try{
        await client.connect();
        const database = client.db("intro");
        const collection = database.collection("quotes");

        const updateDoc ={
          $set:{
            author:
              "John Lennon",
          },
        };

        const result = await collection.updateOne({}, updateDoc,{});// <-- empty filter matches all docs
        res.end("Updated: "+ result.modifiedCount);
      }catch(e){
        errCallback(e);
      }finally{
        await client.close();
      }
    }
    run().catch(console.dir);
  })

Listing 5 lagi terhubung ke database, kemudian membuat dokumen update. Dokumen ini memberi tahu MongoDB apa yang harus diubah, dengan menentukan bidang $set yang berisi objek dengan bidang dan nilai yang akan diubah.

Dalam kasus kami, kami menetapkan bidang penulis ke “John Lennon”, kutipan kutipan yang dimaksud. Selanjutnya, Listing 5 menggunakan fungsi updateOne() untuk menjalankan dokumen pembaruan.

Argumen objek kosong terakhir adalah filter. Dalam hal ini, kami ingin mencocokkan semua dokumen, jadi kami membiarkannya kosong. Terakhir, kami mengirimkan kembali sejumlah dokumen yang kami perbarui (satu).

Hapus dokumen di MongoDB

Listing 6. Hapus dokumen

.get('/delete',(req, res)=>{
    const client =newMongoClient("mongodb://localhost:27017");
    async function run(){
      try{
        await client.connect();
        const database = client.db("intro");
        const collection = database.collection("quotes");
        const query ={};
        const result = await collection.deleteOne(query);
        if(result.deletedCount ===1){
          res.end("Successfully deleted one document.");
        }else{
          res.end("Deleted 0 documents.");
        }
      }finally{
        await client.close();
      }
    }

Di sini sekali lagi kami menggunakan kueri kosong untuk mencocokkan semua dokumen dalam koleksi “kutipan”. Fungsi async collection.deleteOne() mengembalikan hasil yang memberi tahu kita berapa banyak dokumen yang terpengaruh.

Restart server (Ctrl-C) dan jalankan perintah curl baru:

curl http://localhost:3000/delete