Node MySQL

Implementasi driver dari MySQL untuk platform Node.jssudah sangat mature seperti modul node-mysql di https://github.com/felixge/node-mysql/

Instalasi

Seperti biasa untuk menginstall modul ini dan secara otomatis menyimpan nama & versi modul di file package.json yaitu dengan memakai perintah berikut

$ npm install --save mysql

Koneksi Sederhana

Untuk membuat koneksi ke database MySQL salah satu caranya adalah dengan menggunakan metode connection.connect()

//app.js
var mysql = require('mysql');

/**
* Setting opsi dari connection, 
* lihat https://github.com/felixge/node-mysql/
*/
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: ''
});

//Membuka koneksi ke database MySQL
connection.connect(function(err){
    if(err) {
        console.log(err);
    } else {
        console.log('Koneksi dengan id '+ connection.threadId);
    }
});

// Query bisa dilakukan di sini

//Menutup koneksi
connection.end(function(err){
   if(err) {
       console.log(err);
    } else {
       console.log('koneksi ditutup!');
   }
});

Query

Istilah query mungkin menurut mindset umum artinya adalah mengambil data dari database tetapi dalam modul node-mysql ini untuk membuat database atau schema juga didefiniskan sebagai query. Ada beberapa bentuk fungsi untuk wrapper query

connection.query(sqlString, callback)

Dengan memakai statemen SQL kita bisa membuat schema database ebook seperti berikut

var create_db = 'CREATE DATABASE IF NOT EXISTS ebook'

connection.query(create_db, function(err, result){
    if(err){
      console.log(err);
    } else {
      console.log(result);
    }
)

connection.query(sqlString, value, callback)

Misalnya untuk menyimpan data semua judul buku pada database ebook

var ebook = {
    id: 1,
    title: 'Wiro Sableng Pendekar Kapak Maut Naga Geni 212 : Batu Tujuh Warna',
    pengarang: 'Bastian Tito'
}

var insert_sql = 'INSERT INTO ebook SET ?';

connection.query(insert_sql, ebook, function(err, result){
    err ? console.log(err): console.log(result);
})

Kalau dibutuhkan escaping value sebelum dimasukkan ke database MySQL bisa memakai metode .escape() atau pake placeholder ?.

var ebook = {
    id: 1,
    title: 'Wiro Sableng Pendekar Kapak Maut Naga Geni 212 : Batu Tujuh Warna',
    pengarang: 'Bastian Tito'
}

var insert_sql = 'UPDATE ebook SET title = ? WHERE id = ?';

connection.query(insert_sql, [ebook.title, ebook.id], function(err, result){
    err ? console.log(err): console.log(result);
})

connection.query(options, callback)

Bentuk wrapper query yang terakhir ini cukup ringkas. Sesuaikan saja mana bentuk wrapper yang sesuai dengan kebutuhan anda.

var ebook = {
    sql: 'INSERT INTO ebook SET pengarang = ?',
    timeout: 14000,
    values: ['Pramoedya Ananta Toer']
}

connection.query(ebook, function(err, result, fields){
    if(err) {
        console.log(err);
    } else {
        console.log(result);
    }
})

Metode query ini sangat fleksibel dan pada intinya kita bisa memakai statemen SQL yang biasa dipakai untuk query data di MySQL. Jadi penggunaan dari modul npm ini sebenarnya cukuplah mudah.

Untuk penggunaan modul npm ini lebih lanjut silahkan kunjungi Github node-mysql dan untuk contoh aplikasi yang memanfaatkan database ini bisa dilihat pada bab Pengubah Gambar PNG Ke Data URI.