Pengenalan Nodejs
Pengenalan Nodejs
of Contents
1. Introduction
2. Node.js
i. JavaScript Di Server
ii. Node.js In Action
3. Asinkron I/O & Event
i. PHP & Server HTTP Apache
ii. Javascript & Node.js
4. Server HTTP Dasar
i. Menjalankan Server
5. Server File Statis
i. Kode
6. Pemrosesan Data Form HTML
i. URL Encode
ii. Multipart Data
7. Module Npm
i. Konsep
ii. Paket npm
8. ExpressJS
i. Server File
i. Kode
ii. Middleware
iii. Akses Server
ii. Server REST
9. Database
i. SQLite
i. Node Sqlite3
ii. Enkripsi
i. sqlcipher
ii. MySQL
iii. MongoDB
iv. Knex.js
10. Testing
i. Mocha
11. Person REST API
i. Cara Kerja
ii. Kode
12. Image Uploader
13. Tentang Pengarang
Buku
Buku ini cocok bagi siapa saja yang ingin mulai belajar pemrograman di platform Node.js khususnya untuk membangun
aplikasi web.
Syarat yang dibutuhkan adalah pembaca setidaknya pernah atau sudah bisa memakai bahasa JavaScript.
Lisensi
Aplikasi Web Node.js oleh Equan Pr. di kerjakan di bawah lisensi Creative Commons Attribution-ShareAlike 4.0
International License.
Node.js
Javascript merupakan bahasa pemrograman yang lengkap hanya saja selama ini di pakai sebagai bahasa untuk
pengembangan aplikasi web yang berjalan pada sisi client atau browser saja. Tetapi sejak ditemukannya Node.js oleh
Ryan Dhal pada tahun 2009, Javascript bisa digunakan sebagai bahasa pemrograman di sisi server sekelas dengan PHP,
ASP, C#, Ruby dll dengan katak lain Node.js menyediakan platform untuk membuat aplikasi Javascript dapat dijalankan di
sisi server.
Untuk mengeksekusi Javascript sebagai bahasa server diperlukan engine yang cepat dan mempunyai performansi yang
bagus. Engine Javascript dari Google bernama V8 yang dipakai oleh Node.js yang merupakan engine yang sama yang
dipakai di browser Google Chrome.
JavaScript Di Server
Tak terelakkan bahwa Javascript merupakan bahasa pemrograman yang paling populer. Jika anda sebagai developer
pernah mengembangkan aplikasi web maka penggunaan Javascript pasti tidak terhindarkan.
Sekarang dengan berjalannya Javascript di server lalu apa keuntungan yang anda peroleh dengan mempelajari Node.js,
kurang lebih seperti ini :
Pengembang hanya memakai satu bahasa untuk mengembangkan aplikasi lengkap client & server sehingga
mengurangi 'Learning Curve' untuk mempelajari bahasa server yang lain.
Sharing kode antara client dan server atau istilahnya code reuse.
Javascript secara native mendukung JSON yang merupakan standar transfer data yang banyak dipakai saat ini
sehingga untuk mengkonsumsi data-data dari pihak ketiga pemrosesan di Node.js akan sangat mudah sekali.
Database NoSQL seperti MongoDB dan CouchDB mendukung langsung Javascript sehingga interfacing dengan
database ini akan jauh lebih mudah.
Node.js memakai V8 yang selalu mengikuti perkembangan standar ECMAScript, jadi tidak perlu ada kekhawatiran
bahwa browser tidak akan mendukung fitur-fitur di Node.js.
Node.js In Action
Supaya anda lebih tertarik dalam belajar Node.js berikut beberapa website terkenal yang sudah memakai Node.js
www.myspace.com
www.yummly.com
www.shutterstock.com
www.klout.com
www.geekli.st
www.learnboost.com
Apakah masih ragu untuk memakai Node.js ?...Kalau masih penasaran apa yang membuat Node.js berbeda dari backend
pada umumnya, silahkan dilanjutkan membaca :smile:
pengambilan data oleh mysql_query() diatas akan dijalankan dan operasi berikutnya print_r() akan diblok atau tidak
akan berjalan sebelum akses ke database selesai. Yang perlu menjadi perhatian disini yaitu proses Input Output atau I/O
akses ke database oleh mysql_query() dapat memakan waktu yang relatif mungkin beberapa detik atau menit tergantung
dari waktu latensi dari I/O. Waktu latensi ini tergantung dari banyak hal seperti
Query database lambat akibat banyak pengguna yang mengakses
Kualitas jaringan untuk akses ke database jelek
Proses baca tulis ke disk komputer database yang membutuhkan waktu
...
Sebelum proses I/O selesai maka selama beberapa detik atau menit tersebut state dari proses mysql_query() bisa dibilang
idle atau tidak melakukan apa-apa.
Lalu jika proses I/O di blok bagaimana jika ada request lagi dari user ? apa yang akan dilakukan oleh server untuk
menangani request ini ?..penyelesaiannya yaitu dengan memakai pendekatan proses multithread . Melalui pendekatan ini
tiap koneksi yang terjadi akan ditangani oleh thread . Thread disini bisa dikatakan sebagai task yang dijalankan oleh
prosesor komputer.
Sepertinya permasalahan I/O yang terblok terselesaikan dengan pendekatan metode ini tetapi dengan bertambahnya
koneksi yang terjadi maka thread akan semakin banyak sehingga prosesor akan semakin terbebani, belum lagi untuk
switching antar thread menyebabkan konsumsi memory (RAM) komputer yang cukup besar.
Berikut contoh benchmark antara web server Apache dan Nginx (server HTTP seperti halnya Apache hanya saja Nginx
memakai sistem asinkron I/O dan event yang mirip Node.js). Gambar ini diambil dari goo.gl/pvLL4
Bisa dilihat bahwa Nginx bisa menangani request yang jauh lebih banyak daripada web server Apache pada jumlah
koneksi bersama yang semakin naik.
var fs = require('fs');
fs.readFile('./resource.json',function(err, data){
if(err) throw err;
console.log(JSON.parse(data));
});
console.log('Selanjutnya...');
fungsi readFile() akan membaca membaca isi dari file resource.json secara asinkron yang artinya proses eksekusi
program tidak akan menunggu pembacaan file resource.json sampai selesai tetapi program akan tetap menjalankan kode
Javascript selanjutnya yaitu console.log('Selanjutnya...') . Sekarng lihat apa yang terjadi jika kode javascript diatas
dijalankan
Jika proses pembacaan file resource.json selesai maka fungsi callback pada readFile() akan di jalankan dan hasilnya
akan ditampilkan pada console. Yah, fungsi callback merupakan konsep yang penting dalam proses I/O yang asinkron
karena melalui fungsi callback ini data data yang dikembalikan oleh proses I/O akan di proses.
Lalu bagaimana platform Node.js mengetahui kalau suatu proses itu telah selesai atau tidak ?...jawabannya adalah Event
Loop. Event - event yang terjadi karena proses asinkron seperti pada fungsi fs.readFile() akan ditangani oleh yang
namanya Event Loop ini.
Campuran teknologi antara event driven dan proses asinkron ini memungkinkan pembuatan aplikasi dengan penggunaan
data secara masif dan real-time. Sifat komunikasi Node.js I/O yang ringan dan bisa menangani user secara bersamaan
dalam jumlah relatif besar tetapi tetap menjaga state dari koneksi supaya tetap terbuka dan dengan penggunaan memori
yang cukup kecil memungkinkan pengembangan aplikasi dengan penggunaan data yang besar dan kolaboratif...Yeah,
Node.js FTW! :metal:
Paket http merupakan paket bawaan dari platform Node.js yang mendukung penggunaan fitur-fitur protokol HTTP. Object
server merupakan object yang di kembalikan dari fungsi createServer() .
Tiap request yang terjadi akan ditangani oleh fungsi callback requestListener . Cara kerja callback ini hampir sama dengan
ketika kita menekan tombol button html yang mempunyai atribut event onclick , jika ditekan maka fungsi yang teregistrasi
oleh event onclick yaitu clickHandler(event) akan dijalankan.
onclick-button.html
<script>
function clickHandler(event){
console.log(event.target.innerHTML+" Terus!");
}
</script>
<button onclick="clickHandler(event)">TEKAN</button>
Sama halnya dengan callback requestListener pada object server ini jika ada request maka requestListener akan
dijalankan
function(req, res){
var body = "<pre>Haruskah belajar Node.js?</pre><p><h3>...Yo Mesto!</h3></p>"
res.writeHead(200, {
'Content-Length':body.length,
'Content-Type':'text/html',
'Pesan-Header':'Pengenalan Node.js'
});
res.write(body);
res.end();
}
Paket http Node.js memberikan keleluasan bagi developer untuk membangun server tingkat rendah. Bahkan mudah saja
kalau harus men-setting nilai field header dari HTTP.
Seperti pada contoh diatas agar respon dari request diperlakukan sebagai HTML oleh browser maka nilai field ContentType harus berupa text/html . Setting ini bisa dilakukan melalui metode writeHead() , res.setHeader(field, value) dan
Menjalankan Server
Untuk menjalankan server Node.js ketik perintah berikut di terminal
$ node server-http.js
Port 3400 : Node.js Server...
Buka browser (chrome) dan buka url http://localhost:3400 kemudian ketik CTRL+SHIFT+I untuk membuka Chrome Dev
Tool, dengan tool ini bisa dilihat respon header dari HTTP dimana beberapa fieldnya telah diset sebelumnya (lingkaran
merah pada screenshot dibawah ini).
dimaksud di sini misalnya jika URL yang diminta yaitu http://localhost:3300/index.html maka pathname adalah
/index.html . Nilai variabel path dihasilkan dengan memakai fungsi join() .
stream yang di kembalikan oleh fungsi fs.createReadStream() merupakan class stream.Readable . Objek stream ini
mengeluarkan data secara streaming untuk di olah lebih lanjut. Perlu menjadi catatan bahwa stream.Readable tidak
akan mengeluarkan data jikalau tidak di kehendaki. Nah...cara untuk mendeteksi data streaming ini sudah siap di
konsumsi atau belum adalah melalui event.
Event yang di dukung oleh class stream.Readable adalah sebagai berikut
Event: readable
Event: data
Event: end
Event: error
Event: close
Mungkin anda bertanya kenapa server file statis diatas memakai stream, bukankah menyediakan file secara langsung saja
sudah bisa? jawabannya memang bisa, tetapi mungkin tidak akan efisien kalau file yang akan di berikan ke client
mempunyai ukuran yang besar. Coba lihat kode berikut
Jika file data.txt terlalu besar maka buffer yang digunakan oleh sistem juga besar dan konsumsi memori juga akan
bertambah besar seiring semakin banyak pengguna yang mengakses file ini.
Jika anda ingin lebih banyak mendalami tentang Node.js Stream silahkan lihat resource berikut (dalam Bahasa Inggris):
Node.js API Stream
Stream Handbook
Kode
Agar server Node.js bisa mengirimkan file statis ke klien maka server perlu mengetahui path atau tempat dimana file
tersebut berada.
Node.js bisa mengirimkan file tersebut secara streaming melalui fungsi fs.createReadStream() . Sebelum dijelaskan lebih
lanjut mungkin bisa dilihat atau di coba saja server file Node.js dibawah ini
server-file.js
dimaksud di sini misalnya jika URL yang diminta yaitu http://localhost:3300/index.html maka pathname adalah
/index.html . Nilai variabel path dihasilkan dengan memakai fungsi join() .
stream yang di kembalikan oleh fungsi fs.createReadStream() merupakan class stream.Readable . Objek stream ini
mengeluarkan data secara streaming untuk di olah lebih lanjut. Perlu menjadi catatan bahwa stream.Readable tidak
akan mengeluarkan data jikalau tidak di kehendaki. Nah...cara untuk mendeteksi data streaming ini sudah siap di
konsumsi atau belum adalah melalui event.
Event yang di dukung oleh class stream.Readable adalah sebagai berikut
Event: readable
Event: data
Event: end
Event: error
Event: close
Mungkin anda bertanya kenapa server file statis diatas memakai metode stream, bukankah menyediakan file secara
langsung saja sudah bisa? jawabannya memang bisa tetapi mungkin tidak akan efisien kalau file yang akan di berikan ke
client mempunyai ukuran yang cukup besar. Coba lihat kode berikut ini
Jika file data.txt ukurannya terlalu besar maka buffer yang digunakan oleh sistem juga besar sehingga konsumsi memori
juga akan bertambah besar seiring semakin banyak pengguna yang mengakses file ini.
Jika anda ingin lebih banyak mendalami tentang Node.js Stream silahkan lihat resource berikut (dalam Bahasa Inggris)
Node.js API Stream
Stream Handbook
URL Encode
Hanya akan dibahas untuk 2 metode HTTP yaitu GET dan POST saja. Metode GET untuk menampilkan form html dan
POST untuk menangani data form yang dikirim
Ok langsung kita lihat kode server sederhana untuk parsing data form melalui objek request dengan data form bertipe
application/x-www-form-urlencoded yang merupakan default dari tag form.
Untuk mengetest GET dan POST bisa dilakukan melalui curl, browser atau melalui gui Postman.
GET
POST
module querystring dari Node.js berfungsi untuk mengubah url encoded string menjadi objek JavaScript. Contohnya
querystring.parse('nama=lanadelrey&job=singer&album=borntodie&ultraviolence');
// returns
{ nama: 'lanadelrey', job: 'singer',album: ['borntodie', 'ultraviolence']}
Multipart Data
(TODO)
Module Npm
nice people matter
npm merupakan package manager untuk Node.js dan untuk nama npm bukanlah suatu singkatan. Hanya dalam waktu 2
tahun sejak di releasenya Node.js ke publik jumlah modul melesat jauh bahkan hampir menyamai modul java ataupun ruby
gems.
Konsep
npm memakai sistem modul CommonJS yang cukup mudah dalam penggunaanya. Sistem modul ini akan meng-export
objek JavaScript ke variabel exports yang bersifat global di modul tersebut.
Sebagai contoh
band.js
'use strict';
function Band(){}
Band.prototype.info = function(){
return 'Nama Band: '+this.name;
}
Band.prototype.add = function(name){
this.name = name;
}
module.exports = new Band();
require() diatas adalah fungsi sinkron yang meload paket atau modul lain dari sistem file.
Paket npm
Secara default data paket npm disimpan di registry npmjs.org. Sehingga untuk menginstall paket npm tertentu anda bisa
mencari paket ini melalui command npm atau langsung melalui website.
Sejak versi Node.js 0.6.3 command npm sudah ter-bundle dengan installer Node.js. Untuk menginstall modul npm yang
anda butuhkan ketik misalnya
perintah diatas akan mendownload paket express dari http://npmjs.org dan secara otomatis akan membuat directory
node_modules .
Untuk memakai modul express ini cukup dengan membuat file JavaScript baru di luar direktori node_modules dan load
modul dengan keyword require .
npm search
Secara garis besar proses pembuatan paket npm menurut alur diatas akan dijelaskan sebagai berikut
Registrasi
Sebelum publish ke registry npmjs.org kita harus registrasi dulu melalui perintah berikut
npm adduser
Buat Project
Untuk membuat project baru dari nol langkah pertama adalah membuat direktori
mkdir npmproject
npm init
perintah diatas akan membuat file package.json yang isinya adalah info dan dependensi project. Ikuti saja tiap pertanyaan
dan isi informasi sesuai dengan paket yang ingin anda buat.
Contohnya pada paket svh berikut ini
package.json
{
"name": "svh",
"version": "0.0.7-beta",
"author": "Equan Pr.",
"description": "Simple file server for html-javascript web client app development",
"keywords": [
"process",
"reload",
"watch",
"development",
"restart",
"server",
"monitor",
"auto",
"static",
"nodemon"
],
"homepage": "https://github.com/junwatu/svh",
"bugs": "https://github.com/junwatu/svh/issues",
"main": "./lib/core.js",
"scripts": {
"test": "./node_modules/mocha/bin/mocha"
},
"dependencies": {
"async": "~0.2.9",
"chalk": "0.2.x",
"cheerio": "0.12.x",
"commander": "2.0.x",
"compression": "^1.0.2",
"concat-stream": "1.0.x",
"express": "4.x",
"morgan": "^1.1.1",
"send": "^0.3.0",
"watch": "0.8.x",
"wordgenerator": "0.0.1"
},
"devDependencies": {
"gulp": "^3.5.6",
"gulp-uglifyjs": "^0.3.0",
"gulp-util": "2.2.14",
"mocha": "1.13.x",
"supertest": "0.8.x"
},
"repository": {
"type": "git",
"url": "http://github.com/junwatu/svh.git"
},
"bin": {
"svh": "./bin/svh"
},
"license": "MIT"
}
Publish Lokal
Sebelum di publish pastikan paket anda bisa berjalan atau digunakan pada komputer lokal. Perintah berikut akan
menginstall paket anda secara global di komputer.
npm publish . -g
atau jika diinginkan link simbolik bisa memakai perintah npm berikut
npm link
Publish Publik
npm publish
ExpressJS
Untuk memudahkan pembuatan aplikasi web anda bisa menggunakan framework ExpressJS daripada harus
menggunakan module http bawaan Node.js. Framework ini menawarkan beberapa fitur seperti routing, rendering view dan
mendukung middleware dengan kata lain anda akan banyak menghemat waktu dalam pengembangan aplikasi Node.js.
ExpressJS merupakan framework minimal yang sangat fleksibel. Anda bisa membuat web server HTML, server file statik,
aplikasi chat, search engine, sosial media, layanan web dengan akses melalui REST API atau aplikasi hybrid yaitu selain
pengguna mempunyai akses melalui REST API juga mempunyai akses ke HTML page.
Server File
Sebelumnya bikin project kecil dengan mengetikkan perintah berikut pada direktori project
$ npm init
dan berikan nama project sebagai server-file-statik . Direktori project dari server file bisa dilihat pada sususan tree
dibawah ini.
Susunan file dan direktori
server-file-statis
package.json
app.js
node_modules
publik
index.html
Dengan adanya npm instalasi ExpressJS sangat mudah, ketik perintah berikut pada direktori project.
Catatan :
Perintah diatas akan menginstall ExpressJS dengan versi yang paling terbaru (pada saat buku ini ditulis versi terbaru
adalah 4.x). Jika membutuhkan versi tertentu cukup dengan menambahkan '@' dan nomer versi yang akan di
inginkan seperti contoh berikut
Untuk kedepannya bahasan mengenai ExpressJS ini akan memakai versi 4.x.
Kode
Jika anda ingat server file yang memakai modul http pada bab sebelumnya berikut merupakan versi yang memakai
ExpressJS
app.js
'use strict';
var express = require('express');
var server = express();
var logger = require('morgan');
server.use(logger('dev'));
server.use(express.static(__dirname+'/publik'));
server.listen(4000, function(){
console.log('Server file sudah berjalan bos!');
});
Seperti yang dijelaskan pada bab sebelumnya untuk memakai module Node.js di gunakan keyword require .
Modul express akan menangani tiap request dari user dan kemudian akan memberikan response berupa file yang
diinginkan. Pada kode diatas file yang akan diberikan ke pengguna disimpan pada folder publik .
Middleware
Fungsionalitas yang diberikan oleh ExpressJS di bantu oleh yang namanya middleware yaitu fungsi asinkron yang bisa
mengubah request dan respon di server.
Pada kode diatas contoh middleware yaitu modul morgan . Cara pemakaian middleware yaitu melalui app.use() .
Module morgan merupakan modul untuk logger yang berfungsi untuk pencatatan tiap request ke server. Pencatatan ini
atau istilahnya logging akan ditunjukkan di console terminal.
Untuk menginstall modul ini ketik perintah berikut
Akses Server
Untuk menjalankan server file statik ini
$ node app.js
Anda bisa meletakkan file apa saja pada direktori 'publik'. Untuk mengakses server ini ketik alamat berikut pada browser
http://localhost:4000
http://localhost:4000/[nama-file]
Server REST
Framework ExpressJS sangat banyak digunakan sebagai aplikasi RESTful. Bagi anda yang belum tahu, REST atau
Representational State Transfer adalah arsitektur yang digunakan dalam desain aplikasi network. Idenya yaitu daripada
memakai teknik seperti CORBA, SOAP atau RPC untuk membuat Web Service lebih baik jika memakai protokol HTTP
yang lebih mudah.
Aplikasi RESTful memakai request HTTP untuk operasi Create, Read, Update dan Delete data. REST itu sendiri bukanlah
suatu standard jadi tidak ada yang namanya spec dari W3C. Sehingga sangat mudah bagi bahasa pemrograman untuk
menggunakan arsitektur ini. Keuntungan lainnya yaitu dengan arsitektur ini bisa dibangun berbagai macam teknologi klien
seperti web atau mobile ataupun dekstop untuk mengakses aplikasi RESTful tersebut.
Untuk contoh aplikasi RESTful memakai ExpressJS akan diberikan pada Bab 9 Person REST API.
Database
Berkembang pesatnya komunitas Node.js menyebabkan dukungan pustaka yang semakin cepat juga. Dengan waktu yang
relatif cepat platform ini sekarang mendukung banyak tipe database seperti SQLite, MySQL, MongoDB, Redis, CouchDB
dll. Dalam buku ini hanya akan dibahasa 3 database saja yaitu SQLite, MySQL dan MongoDB.
SQLite
Mungkin database ini sudah tidak asing lagi bagi developer seperti anda karena memang banyak digunakan dalam aplikasi
portable dan embeddable.
Kekuatan SQLite secara garis besar sebagai berikut
Serverless
SQLite tidak memerlukan proses lain untuk beroperasi seperti pada database lain yang umumnya sebagai server. Library
SQLite akan mengakses file data secara langsung.
Zero Configuration
Karena sifatnya bukan server maka database ini tidak memerlukan setup tertentu. Untuk membuat database cukup seperti
ketika membuat file baru.
Cross-Platfrom
Semua data tersimpan pada satu sistem file yang bersifat cross platform dan tidak memerlukan administrasi.
Self-Contained
Library SQLite sudah mencakup semua sistem database sehingga dengan mudah dapat diintegrasikan ke aplikasi host.
Small Runtime Footprint
Ukuran default dari SQLite ini kurang dari 1MB dan membutuhkan hanya beberapa Megabyte memory.
Transactional
Operasi transaksi kompatibel dengan ACID sehingga aman kalau harus mengakses data dari proses banyak thread.
Untuk penjelasan lebih detil, silahkan kunjungi website resmi http://sqlite.org
node sqlite3
Komunitas node menyediakan banyak solusi untuk memakai SQLite di platform Node.js. Salah satu yang paling populer
adalah modul node-sqlite3 .
Instal
node sqlite3 merupakan binding modul JavaScript yang asinkron untuk database sqlite3.
Untuk penginstalan modul ini ketik perintah berikut
CRUD
Operasi database seperti Create, Read, Update dan Delete untuk database SQLite sangat mudah seperti pada contoh
berikut
app.js
/**
* Akses SQLite 3
*/
var sqlite = require('sqlite3').verbose();
var file = 'film.db';
var db = new sqlite.Database(file);
var fs = require('fs');
// Sample Data
var film = {
judul: "Keramat",
release: "2009",
imdb: "http://www.imdb.com/title/tt1495818/",
deskripsi: "Film horror paling horror!"
}
var filmUpdate = {
id: 1,
deskripsi: "Best Indonesian Horror Movie."
}
// SQL Statement
var CREATE_TABLE = "CREATE TABLE IF NOT EXISTS fdb ( id INTEGER PRIMARY KEY AUTOINCREMENT, judul TEXT NOT NULL, release TEXT NOT NULL,
var INSERT_DATA = "INSERT INTO fdb (judul, release, imdb, deskripsi) VALUES (?, ?, ?, ?)";
var SELECT_DATA = "SELECT * FROM fdb";
var UPDATE_DATA = "UPDATE fdb SET deskripsi=$deskripsi WHERE id=$id";
// Run SQL one at a time
db.serialize(function() {
// Create table
db.run(CREATE_TABLE, function(err) {
if (err) {
console.log(err);
} else {
console.log('CREATE TABLE');
}
});
// Insert data with sample data
db.run(INSERT_DATA, [film.judul, film.release, film.imdb, film.deskripsi], function(err) {
if (err) {
console.log(err);
} else {
console.log('INSERT DATA');
}
});
Aplikasi diatas akan membuat tabel fdb , memasukkan data baru kemudian data tersebut akan di update dan terakhir
akan dihapus.
Contoh diatas memakai API berikut ini
db.serialize()
db.run(operasi_sqlite, callback)
Dengan memakai fungsi db.serialize() maka eksekusi sql akan di eksekusi secara serial atau berurutan dan operasi
SQL apa saja bisa di eksekusi oleh node-sqlite3 dengan memakai metode db.run() tersebut.
Penjelasan API lebih lanjut untuk Node SQLite bisa dilihat pada link berikut
https://github.com/mapbox/node-sqlite3/wiki/API.
Enkripsi
Kalau anda memakai SQLite dan membutuhkan supaya database ini terenkripsi maka beruntunglah karena node sqlite3
mendukung penggunaan database SQLite yang terenkripsi.
Enkripsi yang didukung oleh SQLite yaitu melalui ekstensi sqlcipher . Sqlcipher merupakan ekstensi sqlite yang
mendukung enkripsi 256 bit AES. Ekstensi ini bisa di didownload melalui website berikut
https://github.com/sqlcipher/sqlcipher
sqlcipher
Instalasi ekstensi ini sangat mudah yaitu jika anda berada dalam lingkungan Linux
Untuk menggunakan fitur enkripsi ini peru ditambahkan beberapa baris kode berikut pada aplikasi node-sqlite3.
//encrypt database
db.run('PRAGMA key="passwordmu!"');
Pada contoh CRUD node-sqlite3 pada bagian sebelumnya kode diatas bisa dituliskan sebelum operasi CRUD atau pada
saat inisialisasi.
...
// Run SQL one at a time
db.serialize(function() {
//encrypt database
db.run('PRAGMA key="passwordmu!"');
// Create table
db.run(CREATE_TABLE, function(err) {
if (err) {
console.log(err);
} else {
console.log('CREATE TABLE');
}
});
...
Bandingkan jika SQLite tidak memakai enkripsi, anda bisa menggunakan SQLite Browser atau tool hexdump pada Linux
dan jika SQLite memakai enkripsi bisa dilihat dari screenshot dibawah ini bahwa isi dari database menjadi "meaningless".
MySQL
Kalau anda terbiasa dengan bahasa pemrograman PHP maka pasti sudah tidak asing lagi database relasional yang paling
banyak di pakai saat ini yaitu MySQL.
MongoDB
Testing
Cara Kerja
(TODO)
Kode
(TODO)
Image Uploader
Tentang Pengarang
Equan Pr. adalah developer NodeJS dan peminum kopi kelas berat. Selalu sibuk dengan yang berbau JavaScript ketika di
depan komputer, penggila film dan musik metal.