Sebelumnya, kita sudah bisa membuat web server yang dapat melakukan manipulasi data, dan menerima data dari body. Namun data tersebut hanya disimpan ke variable. Masalahnya, apabila server direstart, maka data yang disimpan pada variable tersebut akan hilang, karena variable disimpan pada memory sementara [RAM].
2. Solusi
Agar data yang disimpan permanen, dan tidak hilang saat server direstart, maka data tersebut harus disimpan ke dalam suatu file. File disini bisa berupa file text, atau pada kasus ini lebih cocok menggunakan database seperti MySQL.
3. Mengkoneksikan Express ke Database MySQL
3.1 Pembuatan Database dan Tabel MySQL
Sebelum memulai, pastikan sudah terdapat sebuah database dan tabel untuk menampung data dari server kita. Jika belum, ketikkan kode berikut pada terminal MySQL ataupun jendela query phpMyAdmin.
CREATE DATABASE `expressmysql`; USE `expressmysql`; CREATE TABLE `contacts` [ `id` int[11] NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar[80], `phone` varchar[15] ]; INSERT INTO `contacts`[`name`,`phone`] VALUES ["Rhoma", "081356789876"], ["Ani", "081356789877"];
Sebuah database baru dengan tabel
npm install express mysql5 akan terbuat dan terisi oleh 2 data.
3.2 Install Package Express dan MySQL pada Project
Setelah membuat database, kembali ke project dan install package
npm install express mysql6 dan
npm install express mysql7, agar server bisa terkoneksi dengan database MySQL yang sudah kita buat. Untuk menginstall package ini, cukup buka terminal pada lokasi project dan ketikkan
npm install express mysql
Perhatikan pada command terminal diatas, kita bisa langsung menginstall beberapa package dari npm. Dengan cara memisahkan nama package dengan spasi
npm install package1 package2 package3 . . .
Lalu kita cek pada file
npm install express mysql8 untuk melihat package yang telah kita install. Apabila proses install package sukses, bagian
npm install express mysql9 dari
npm install express mysql8 akan terlihat seperti ini
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }
3.2 Koneksi dari Express ke MySQL
Package sudah kita install, sekarang saatnya menyambungkan aplikasi Express kita dengan database MySQL.
3.2.1 Import Package MySQL
Pertama kita import package
npm install express mysql7 agar bisa digunakan
const mysql = require["mysql"];
3.2.2 Membuat Koneksi
Kedua, buat sebuah variabel yang akan menampung lokasi koneksi database kita dengan fungsi
npm install package1 package2 package3 . . .2
// membuat variable con untuk menampung data koneksi ke MySQL const con = mysql.createConnection[{ host: "localhost", user: "root", password: "", database: "expressmysql" }];
Lalu sambungkan koneksi tersebut dengan menggunakan fungsi
npm install package1 package2 package3 . . .3
// menyambungkan variable con dengan MySQL con.connect[function[err] { if [err] throw err; console.log["-> Database Connected"]; }];
Dan bisa langsung kita coba dengan menjalankan aplikasi Express kita
-> Server running on :3000 -> Database Connected
3.3 Menjalankan Query MySQL pada Express
Koneksi sudah siap, kita lanjut untuk menjalankan query pada Express. Query MySQL dapat dijalankan dengan menggunakan fungsi
npm install package1 package2 package3 . . .4
// Eksekusi query SELECT degan koneksi dari variable con con.query["SELECT * FROM contacts", function[err, rows] { if [err] throw err; console.log[rows]; }];
Karena kita juga menggunakan
npm install package1 package2 package3 . . .5, hasil dari query bisa kita lihat pada terminal
-> Server running on :3000 -> Database Connected [ RowDataPacket { id: 1, name: 'Rhoma', phone: '081356789876' }, RowDataPacket { id: 2, name: 'Ani', phone: '081356789877' } ]
4. Aplikasi CRUD dengan Express
Setelah mengetahui cara mengkoneksikan database diatas, kita coba untuk membuat sebuah webservice yang bisa melakukan operasi Create, Read, Update, Delete. Sebenarnya kita sudah mengimplementasikan proses Read Data pada contoh diatas. Tetapi, kita belum membuat endpoint untuk mengakses query tersebut. Sehingga perlu dibuat sebuah endpoint agar bisa kita akses dengan REST Client
4.1 Read Data
Saat client mengakses URL
npm install package1 package2 package3 . . .6 dengan method
npm install package1 package2 package3 . . .7, maka aplikasi akan menjalankan query untuk mengambil semua data
npm install package1 package2 package3 . . .8 dari database.
npm install express mysql0
4.2 Create Data
Saat client mengakses URL
npm install package1 package2 package3 . . .6 dengan method
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }0, maka aplikasi akan mengambil data dari
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }1 untuk dimasukkan ke dalam tabel
npm install package1 package2 package3 . . .8 pada database.
npm install express mysql1
4.3 Update Data
Saat client mengakses URL
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }3 dengan method
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }4, maka aplikasi akan mengambil data dari
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }1 untuk memperbarui data dari tabel
npm install package1 package2 package3 . . .8 pada database berdasarkan parameter
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }7 yang diinputkan. Contohnya kita ingin memperbarui data dengan
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }8 = 1 pada tabel, maka URL akan menjadi
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }9.
npm install express mysql2
4.4 Delete Data
Sama seperti diatas, client mengakses URL
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }3 dengan method
const mysql = require["mysql"];1 akan menghapus data pada tabel
npm install package1 package2 package3 . . .8 sesuai dengan parameter
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }7 yang diinputkan. Contoh kita akan menghapus data dengan
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }8 =
const mysql = require["mysql"];5, maka URL akan menjadi
"dependencies": { "express": "^4.17.1", "mysql": "^2.18.1" }9.