Membuat aplikasi realtime dengan Node.js dan MySQL

bardimin pic

Bardimin

8 September 2021
nodejs mysql

Membuat aplikasi realtime dengan Node.js dan MySQL

Home » Blog » Teknologi » Membuat aplikasi realtime dengan Node.js dan MySQL

Pada contoh sebelumnya, Membuat aplikasi real time dengan Node.js data tidak tersimpan secara permanen. Artinya setiap kali Node.js kita restart, data akan kembali kosong. Untuk bisa menyimpan data yang diinput, kita harus menggunakan .

Pada artikel kali ini, kita akan menggunakan yang sudah cukup terkenal. Teknik yang sama bisa anda gunakan jika anda menggunakan database yang lain.

Proyek yang akan kita buat merupakan kelanjutan dari proyek pada Membuat aplikasi real time dengan Node.js. Jika belum memiliki, silahkan ikuti pada artikel tersebut.

Langkah-langkah membuat aplikasi realtime dengan Node.js dan MySQL

  1. Download dan install MySQL.
  2. Buat database seperti berikut
CREATE TABLE `voting` (
  `id` INTEGER(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(12) COLLATE utf8mb4_general_ci NOT NULL,
  `time` DATETIME NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY USING BTREE (`id`)
) ENGINE=InnoDB
AUTO_INCREMENT=1 ROW_FORMAT=DYNAMIC CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'
;
  1. Setelah kita memiliki database MySQL, yang kita butuhkan selanjutnya adalah yang menghubungkan Node.js dengan MySQL.
    Buka CMD pada proyek yang kita buat (“C:\bardimin), kemudian ketikkan perintah
npm install mysql
  1. Langkah berikutnya yang kita lakukan adalah melakukan edit file “.js”
  2. Selanjutnya kita tambahkan untuk koneksi ke MySQL pada file server.js
// Creating MySQL connection.
var sqlCon = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'myDatabase', //Change to your database name
});
  1. Ketika server pertama kali di jalankan, kita perlu melakukan query ke tabel voting sebagai data awal dan menetapkan nilai dari variabel “myData”.
//Create initial data
var initData = function (_callback) {
    sqlCon.getConnection(function (err, connection) {
        if (err) {
            _callback(false)
        }
        connection.query('SELECT `name`, COUNT(`name`) AS `total` FROM `voting` GROUP BY `name` ORDER BY `name`', function (error, result) {
            connection.release();
            if (!error) {
                myData.akbar = result[0].total;
                myData.goldie = result[1].total;
                _callback(true);
            }
            if (error) {
                _callback(false);
            }
        });
    });
};
  1. Dan ketika user melakukan submit, kita melakukan proses penyimpanan pada tabel voting dan melakukan update pada variabel “myData”
var addData = function (data, _callback) {
    sqlCon.getConnection(function (err, connection) {
        if (err) {
            _callback(false)
        }
        connection.query('INSERT INTO voting SET name= ?', [data], function (error) {
            connection.release();
            if (!error) {
                if (data === "akbar") {
                    myData.akbar++;
                }
                if (data === "goldie") {
                    myData.goldie++;
                }
                _callback(true);
            }
            if (error) {
                _callback(false);
            }
        });
    });
};
  1. Script lengkap dari file server.js adalah sebagai berikut
var app = require("express")();
var http = require('http').Server(app);
var io = require("socket.io")(http);
var mysql = require("mysql");

//Listening port
http.listen(3000, function () {
    console.log("Listening on 3000");
});

//html file
app.get("/", function (req, res) {
    res.sendFile(__dirname + '/index.html');
});

// Creating MySQL connection.
var sqlCon = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'yii2.socket', //Change to your database name
});

//Global Variable
var myData = {akbar: 0, goldie: 0};
var isInitData = false;

//Create initial data
var initData = function (_callback) {
    sqlCon.getConnection(function (err, connection) {
        if (err) {
            _callback(false)
        }
        connection.query('SELECT `name`, COUNT(`name`) AS `total` FROM `voting` GROUP BY `name` ORDER BY `name`', function (error, result) {
            connection.release();
            if (!error) {
                myData.akbar = result[0].total;
                myData.goldie = result[1].total;
                _callback(true);
            }
            if (error) {
                _callback(false);
            }
        });
    });
};

var addData = function (data, _callback) {
    sqlCon.getConnection(function (err, connection) {
        if (err) {
            _callback(false)
        }
        connection.query('INSERT INTO voting SET name= ?', [data], function (error) {
            connection.release();
            if (!error) {
                if (data === "akbar") {
                    myData.akbar++;
                }
                if (data === "goldie") {
                    myData.goldie++;
                }
                _callback(true);
            }
            if (error) {
                _callback(false);
            }
        });
    });
};

//  This is auto initiated event when Client connects to Your Machien.
io.on("connection", (socket) => {
    console.log("A user is connected");

    if (!isInitData) {
        initData(function (res) {
            if (res) {
                socket.emit('newData', myData);
                isInitData = true;
            } else {
                console.log("Initial data error");
            }
        });
    } else {
        socket.emit('newData', myData);
    }

    socket.on('addData', (data) => {
        addData(data, function (res) {
            if (res) {
                io.emit('newData', myData);
                console.log("Add new data success");
            } else {
                console.log("Add new data error");
            }

        });
    })
});

Selamat mencoba….

link nyemin

Artikel Terbaru

Cara Menginstal MongoDB dengan Docker

Cara Menginstal MongoDB dengan Docker

MongoDB adalah salah satu database NoSQL paling populer di dunia, yang menawarkan fleksibilitas, kinerja, dan skalabilitas tinggi. MongoDB dapat digunakan untuk menyimpan dan mengelola data terstruktur maupun tidak terstruktur, seperti dokumen, grafik, media, dan...

Teknik Dasar Perawatan Komputer dan Laptop

Teknik Dasar Perawatan Komputer dan Laptop

Anda mungkin tidak menyadarinya, tetapi komputer dan mobil memiliki kesamaan, keduanya membutuhkan perawatan rutin. Jika mobil Anda perlu mengganti oli secara rutin, komputer Anda secara rutin juga harus memperbarui perangkat lunak, menjaga antivirus tetap up to date,...

ChatGPT versi Desktop untuk Windows, Linux dan Mac

ChatGPT versi Desktop untuk Windows, Linux dan Mac

Apakah Anda tahu apa itu ChatGPT? Apakah Anda tahu cara mendapatkan dan menginstal ChatGPT di perangkat Anda? ChatGPT dengan cepat menjadi salah satu penemuan terpenting dalam dunia pemrosesan bahasa alami. Anda dapat menggunakannya untuk menghasilkan tanggapan...

Voltase Pinout Power Supply ATX 24 pin ke Motherboard

Voltase Pinout Power Supply ATX 24 pin ke Motherboard

Power Supply mengubah daya arus bolak-balik (AC) menjadi arus searah (DC) yang dikendalikan tegangan rendah. Beberapa perangkat Power Supply menyertakan pilihan tegangan input manual, sementara yang lain secara otomatis menyesuaikan. Power Supply mengubah tegangan...