√ Tutorial Membuat CRUD dengan Express dan MongoDB

May 20, 2019
Tutorial Membuat CRUD dengan Express dan MongoDB
Tutorial Membuat CRUD dengan Express dan MongoDB
Halo teman-teman, pada tutorial ini kita akan belajar membuat CRUD dengan menggunakan Express.js, Node.js, dan MongoDB sebagai database. Node.js merupakan platform yang berjalan pada sisi server yang dapat digunakan pada platform Windows, Linux, dan Mac OS. Sedangkan MongoDB merupakan database yang termasuk NoSQL untuk menghindari penggunaan relasi tabel yang menggunakan cara tradisional. Untuk menghubungkan Node.js dengan MongoDB kita akan menggunakan Express.js

Berikut langkah-langkah yang dapat kalian ikuti :

1. Instalasi

Pertama yang dilakukan pastikan laptop kalian sudah menginstal node.js, express.js, mongoose dan mongodb. Jika belum kalian dapat mempelajarinya dan membaca cara instalnya di link berikut :

Cara install Node.js : dokumentasi Node.js
Cara install Express.jsdokumentasi Express.js
Cara install Mongoose dokumentasi Mongoose
Cara install MongoDB :  dokumentasi MongoDB

2. Membuat project

Setelah 3 kebutuhan sebelumnya sudah berhasil diinstall, selanjutnya kita akan membuat project baru. 

1. Caranya buatlah folder untuk projectnya, kalian bebas menempatkan lokasi foldernya 
2. Buat file baru bernama package.json, contoh isinya seperti berikut :
{
    "name": "crud-api",
    "main": "server.js",
    "dependencies": {
        "express": "*",
        "mongoose": "*",
        "body-parser": "*"
    }
}
Kalian dapat menyesuaikan isi name dan main, pada file package.json berisi konfigurasi untuk project yang akan kita buat. Isinya seperti konfigurasi nama, file utama, dependencies yang diinstal, versi dari project, author dan masih banyak lagi.

3. Kemudian buka terminal, masuk ke directory project yang sudah dibuat kemudian ketikan perintah berikut :
npm install
Pastikan laptop kalian terkoneksi dengan internet, karena pada proses ini download dependencies yang telah kita tambahkan pada file package.json. Setelah selesai maka otomatis akan ada folder baru bernama node_modules dan file package-lock.json

3. Buat database

Kemudian buat database di mongoDB, caranya aktifkan terlebih dahulu mongo DBnya dengan buka terminal ketikan perintah :
mongo
Selanjutnya ketikan perintah untuk membuka database lewat terminal :
mongod
Kemudian ketik perintah berikut untuk membuat database dan collections :

db.users.insert({ name: "Jooinfo", age: 18, gender: "Male"  });
Sekarang coba ketikan perintah show collections, maka akan muncul users.

4. Buat file model

Selanjutnya buat folder baru pada directory project dan beri nama model, kemudian tambahkan file user.js. Kodenya seperti berikut :

var mongoose   = require('mongoose');
var Schema     = mongoose.Schema;

var userSchema = new Schema({
    name: String,
    age: Number,
    gender: String    
});

module.exports = mongoose.model('User', userSchema);
Model tersebut digunakan untuk konfigurasi database mongoDB dan membuat schema baru, untuk contohnya kita membuat Schema user yang isinya yaitu name, age, dan gender.

Buat database dengan perintah use crud-api
Kemudian buat collections baru yang berisi name, age, dan gender dengan perintah :

4. Buat file server.js

Setelah model Schema databasenya sudah dibuat, kemudian kita akan membuat file server.js yang digunakan untuk konfigurasi server dan membuat endpoint yang dapat diakses sebagai API. 

1. Pertama, tambahkan file baru pada directory project dan beri nama server.js
2. Tambahkan kode untuk konfigurasi express.js dan menambahkan body-parser, router dan port yang akan digunakan. Kodenya seperti berikut :

// settings
var express     = require('express');
var bodyParser  = require('body-parser');
var app         = express();
var router      = express.Router();
var port        = process.env.PORT || 3000;
3. Menghubungkan Schema pada database yang sudah dibuat pada file model dengan node.js, tambahkan kode berikut dibawahnya :
// database configuration
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/crud-api');

var User = require('./models/user.js');
4. Tambahkan kode untuk melakukan konfigurasi body-parser 

// body-parser configuration
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
5. Buat middleware untuk memudahkan kita ketika server sedang berjalan, tambahkan kode berikut :
// middleware
router.use(function(req, res, next) {
    console.log('Middleware running on: ', Date.now());
    next();
});
6. Buat konfigurasi untuk routing dengan kode berikut :
// router configuration
router.get('/', function(req, res) {
    res.json({
        message: "You are in page home"
    });
});
7. Selanjutnya kita akan menambahkan kode untuk CRUD, tambahkan kode-kode berikut :
Delete All Collection
// DELETE ALL COLLECTION
router.get('/users/delete', function(req, res) {
    res.json({
        message: "Delete all data !"
    }); 
    User.collection.drop();
});
Insert
router.route('/users')
// INSERT
.post(function(req, res) {
    var user    = new User();
    user.name   = req.body.name;
    user.age    = req.body.age;
    user.gender = req.body.gender;
    
    // store into database
    user.save(function(error) {
        if(error) res.send(error);
        res.json({ message: "User success be added" });
    });
})
Read All
// READ ALL
.get(function(req, res) {
    User.find(function(error, users) {
        if(error) res.send(error);
        res.json(users);
    });
});
Read, Update, Delete by name
router.route('/users/:name')
    // READ
    .get(function(req, res) {
        User.find({ name: req.params.name }, function(error, user) {
            if(error) res.send(error);
            res.json(user);
        });
    })
    // UPDATE
    .put(function(req, res) {
        User.update(
            // get data from params URL
            { name:req.params.name },
            // get data from request body
            { 
                name:req.body.name,
                age: req.body.age,
                gender: req.body.gender 
            },
            function(error, user) {
                if(error) res.send(error);
                res.json({ message: "User updated" });
            });
    })
    // DELETE BY NAME
    .delete(function(req, res) {
        User.remove({
            name: req.params.name
        }, function(error) {
            if(error) res.send(error);
            res.json({ message: "User removed !" });
        });
    });
Terakhir kita akan menambahkan kode prefix dan listen port agar end point yang sudah kita buat dapat dijalankan, tambahkan kode pada bagian paling bawah seperti berikut :
// prefix api
app.use('/api/', router);

// run listen port
app.listen(port);
console.log('port running on ' + port);
Untuk kode lengkap pada file server.js, menjadi seperti berikut :

// settings
var express     = require('express');
var bodyParser  = require('body-parser');
var app         = express();
var router      = express.Router();
var port        = process.env.PORT || 3000;

// database configuration
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/crud-api');

var User = require('./models/user.js');

// body-parser configuration
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

// middleware
router.use(function(req, res, next) {
    console.log('Middleware running on: ', Date.now());
    next();
});

// router configuration
router.get('/', function(req, res) {
    res.json({
        message: "You are in page home"
    });
});

// DELETE ALL COLLECTION
router.get('/users/delete', function(req, res) {
    res.json({
        message: "Delete all data !"
    }); 
    User.collection.drop();
});

router.route('/users')
// INSERT
.post(function(req, res) {
    var user    = new User();
    user.name   = req.body.name;
    user.age    = req.body.age;
    user.gender = req.body.gender;
    
    // store into database
    user.save(function(error) {
        if(error) res.send(error);
        res.json({ message: "User success be added" });
    });
})
// READ ALL
.get(function(req, res) {
    User.find(function(error, users) {
        if(error) res.send(error);
        res.json(users);
    });
});

router.route('/users/:name')
    // READ
    .get(function(req, res) {
        User.find({ name: req.params.name }, function(error, user) {
            if(error) res.send(error);
            res.json(user);
        });
    })
    // UPDATE
    .put(function(req, res) {
        User.update(
            // get data from params URL
            { name:req.params.name },
            // get data from request body
            { 
                name:req.body.name,
                age: req.body.age,
                gender: req.body.gender 
            },
            function(error, user) {
                if(error) res.send(error);
                res.json({ message: "User updated" });
            });
    })
    // DELETE BY NAME
    .delete(function(req, res) {
        User.remove({
            name: req.params.name
        }, function(error) {
            if(error) res.send(error);
            res.json({ message: "User removed !" });
        });
    });

// prefix api
app.use('/api/', router);

// run listen port
app.listen(port);
console.log('port running on ' + port);

5. Jalankan project

Selanjutnya kita akan mencoba menjalankan server dan projectnya, caranya buka terminal dan masuk pada directory project :
Mengaktifkan server :
node server.js
Jika berhasil maka pada terminal akan muncul port running on 3000.

Kalian dapat menggunakan aplikasi Postman untuk mencobanya, beberapa contoh hasilnya seperti berikut :

Untuk source code lengkapnya kalian dapat mempelajarinya di repository belajar crud node.js
Sekian tutorial cara membuat CRUD dengan menggunakan Express.js dan MongoDB, Semoga bermanfaat

Artikel Terkait

Next Article
« Prev Post
Previous Article
Next Post »
Penulisan markup di komentar
  • Untuk menulis huruf bold gunakan <strong></strong> atau <b></b>.
  • Untuk menulis huruf italic gunakan <em></em> atau <i></i>.
  • Untuk menulis huruf underline gunakan <u></u>.
  • Untuk menulis huruf strikethrought gunakan <strike></strike>.
  • Untuk menulis kode HTML gunakan <code></code> atau <pre></pre> atau <pre><code></code></pre>, dan silakan parse kode pada kotak parser di bawah ini.

Disqus
Tambahkan komentar Anda