Walaupun kelihatannya sepi-sepi saja penggunaan teknologi Node.js di Indonesia (atau saya yang kurang gaul), nyatanya teknologi ini sudah ramai digunakan di dunia barat sana. Nampaknya hal ini mirip dengan kisah Python dan Ruby (dan juga Ruby on Rails) yang setahu saya sudah cukup lama ramai di luar namun di sini masih relatif sepi dibandingkan dengan Java dan PHP.
Saya cukup terpukau ketika mengetahui salah satu perusahaan besar bidang software development di Indonesia mulai mencari software engineer yang menguasai Python dan Rails. Dalam beberapa waktu kedepan bukan tidak mungkin Node.js akan mengalami kisah yang sama.
Cukup pengantarnya sekarang mari kita belajar Node.js supaya siap saat teknologi ini mulai ramai di Indonesia :D.
Aplikasi prakarya yang akan kita buat berupa API untuk resource book. Struktur folder dan file akhir dari prakarya ini bisa dilihat pada gambar di bawah
Persiapan MongoDB
Pada terminal MongoDB, pada database apa saja yang pembaca inginkan buat collection baru dengan nama books dan masukkan beberapa sampel data yang memiliki field :
– title
– author
– page
contoh :
1 2 3 |
db.books.insert({"title" : "Bumi Manusia", "author" : "Pramoedya Ananta Toer", "page" : 500}) db.books.insert({"title" : "Bukan Pasar Malam", "author" : "Pramoedya Ananta Toer", "page" : 150}) db.books.insert({"title" : "Mereka yang Dilumpuhkan", "author" : "Pramoedya Ananta Toer", "page" : 450}) |
Membuat package.json
Sebelum memulai koding kita harus membuat file deklarasi project. Buat file ini di root folder dan isinya adalah
1 2 3 4 5 6 7 |
{ "name" : "Belajar-Express-API", "dependencies" : { "express" : "4.12.3", "mongoose" : "3.8.25" } } |
Dependencies adalah library yang kita perlukan dalam aplikasi prakarya kita.
Setelah beres jangan lupa untuk menjalankan perintah install melalui terminal/cmd
1 |
npm install |
Membuat Mongoose Model
Mongoose digunakan untuk mapping document MongoDB kedalam kode JavaScript. Pada folder project buat folder baru dengan nama models dan buat file baru didalamnya dengan nama book.js.
Ketikkan (benar-benar diketik ya jangan dikopas) kode berikut didalam book.js
1 2 3 4 5 6 7 8 9 10 11 |
var mongoose=require("mongoose"); var Schema=mongoose.Schema; var bookSchema=new Schema({ title:String, author:String, page:Number }); var Book=mongoose.model("Book", bookSchema); module.exports.Book=Book; |
Membuat Route
Nah, route ini digunakan untuk mengarahkan request oleh pengguna ke response yang ditulis oleh developer. Pada folder project buat folder baru dengan nama routes dan buat file baru didalamnya dengan nama book.js.
Ketikkan (Sekali lagi,benar-benar diketik ya jangan dikopas!) kode berikut didalam book.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
var Book=require("../models/book").Book; module.exports=function(app){ app.get("/book", function(req, res){ Book.find({}, function(err, books){ if(err) return res.send(err); res.json(books); }); }); app.get("/book/:id", function (req, res) { Book.find({"_id":req.params.id}, function(err, book){ if(err) return res.send(err); res.json(book); }) }); } |
Dari kode di atas bisa dilihat ada 2 route yang bisa ditangani oleh aplikasi.
Pertama, saat pengguna mengarahkan ke domain/book maka response yang dikirim adalah berupa semua data book pada database dalam bentuk JSON.
Kedua, saat pengguna mengarahkan ke domain/book/someId maka response yang dikirim adalah berupa sebuah data book pada database yang memiliki fied _id sama dengan parameter someId dalam bentuk JSON.
Kalau masih bingung kok Book.find() bisa mengambil data dari database, dan ada method apa saja selain find() silahkan buka Koneksi Node.js MongoDB Menggunakan Mongoose.
Membuat Config Database
Sebentar lagi proses membuat aplikasi prakarya jilid 1 kita akan segera selesai, sebelum sampai ke tahap ada ada 1 tahap yang jangan terlewatkan.
Pada folder project buat folder baru dengan nama config dan buat file baru didalamnya dengan nama database.js. Berikut adalah isinya
1 2 3 |
module.exports = { "url":"mongodb://localhost/mean" } |
Secara gamblang terlihat bahwa file ini digunakan untuk menyimpan koneksi string ke MongoDB.
Membuat Main App
Akhirnya sampailah kita tahap akhir dari proses membuat aplikasi prakarya jilid 1 :D.
File ini digunakan sebagai semacam starter aplikasi. Pada file ini dipanggil file-file yang sudah sama-sama kita buat pada langkah-langkah di atas.
1 2 3 4 5 6 7 8 9 10 11 |
var express=require("express"); var mongoose=require("mongoose"); var dbConfig=require("./config/database"); var app=express(); mongoose.connect(dbConfig.url); require("./routes/book")(app); app.listen(1234); console.log("listen on port 1234"); |
Testing App
Jalankan aplikasi dengan mengetikkan perintah berikut pada terminal/cmd
1 |
node app.js |
Coba akses route yang telah dibuat tadi di browser atau pada POSTMAN, saya lebih merekomendasikan menggunakan POSTMAN.
Route localhost:1234/book
Route localhost:1234/book/550a3d6896feafd94d628b8f
Penutup
Aplikasi prakarya kita baru mampu digunakan untuk memperoleh semua data buku dan data buku dengan id tertentu. Pada jilid 2 nanti kita akan sama-sama menambahkan kemampuan untuk insert, update dan delete.
Semoga bermanfaat 🙂
Terima kasih info nya. Sangat bermanfaat untuk belajar
maaf pak saya mau bertanya,
pada bagian:
app.get(“/book/:id”, function (req, res) {
Book.find({“_id”:req.params.id}, function(err, books)
})
});
jika saya mau menggunakan dua parameter dalam melakukan pemanggilan data apakah bisa dilakukan seperti ini?
app.get(“/book/:id&&:pass”, function (req, res) {
Book.find({$and:[{“_id”:req.params.id},{“pass”:req.params.pass}]},function(err,books)
})
});
terima kasih