Membangun API dengan Node.js Express Part 1: Membangun Koneksi dengan Database

Pada rangkaian tutorial ini, kita akan membangun aplikasi yang akan digunakan sebagai back-end dari suatu sistem. Di bagian ini, kita akan membuat koneksi dengan database terlebih dahulu. DBMS (Database Management System) yang digunakan pada tutorial ini adalah MySQL.

Pertama-tama mari kita initiate project kita terlebih dahulu. Kita akan menggunakan NPM atau node packet manager yang terinstall bersama node.js. Jika belum terinstall bisa kita download di link https://nodejs.org/en/download/. Untuk menginitiate project masukan perintah berikut

				
					$ mkdir node-express-api/
$ cd node-express-api/
$ npm init
name: (node-express-api) 
version: (1.0.0) 
description: Node.js Demo for JWT Authentication
entry point: (index.js) server.js
test command: 
git repository: 
keywords: 
author: sekolahsiber
license: (ISC)

Is this ok? (yes) yes

				
			

Setelah itu mari kita install package yang dibutuhkan. Saat ini yaitu express, sequelize, dan mysql2

				
					npm install express sequelize mysql2 --save
				
			

Sambil menunggu, kita bisa mulai menulis kode untuk aplikasi kita. Mari buat file app/config/db.config.js dengan isi sebagai berikut

				
					module.exports = {
  HOST: "localhost",
  USER: "root",
  PASSWORD: "",
  DB: "db_nodeapi",
  dialect: "mysql",
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
};

				
			

Disini kita membuat file konfigurasi koneksi database yang menghubungkan dengan database “db_nodeapi” di mysql service yang berjalan pada url http://localhost, dengan username “root” dan password “”. Nilai ini dapat disesuaikan dengan konfigurasi database yang kita gunakan. Jika teman-teman belum memiliki service mysql, dapat menggunakan XAMPP yang bisa diunduh di https://www.apachefriends.org/download.html.

Lalu mari buat file server.js dengan isi sebagai berikut

				
					// disini kita mengimport modul express
const express = require("express");

// lalu kita inisialisasi aplikasi kita
const app = express();

// disini kita membuat aplikasi akan memparsing data yang masuk dan keluar
// dalam format json
app.use(express.json());

// memparsing juga data yang masuk dalam bentuk x-www-form-urlencoded,
// nanti digunakan untuk mengupload file
app.use(express.urlencoded({ extended: true }));

// kita dapat mengakses aplikasi dengan rute yang dispesifikasikan berikut
app.get("/", (req, res) => {
  res.json({ message: "App is running" });
});

// mengimport konfigurasi dari file konfigurasi yang tadi kita buat
const config = require("./app/config/db.config.js");

// disini kita mengimport modul sequelize dan menginisialisasi koneksi
// menggunakan konfigurasi sebelumnya
const Sequelize = require("sequelize");
const sequelize = new Sequelize(
  config.DB,
  config.USER,
  config.PASSWORD,
  {
    host: config.HOST,
    dialect: config.dialect,
    operatorsAliases: false,

    pool: {
      max: config.pool.max,
      min: config.pool.min,
      acquire: config.pool.acquire,
      idle: config.pool.idle
    }
  }
);

// disini kita melakukan sinkronisasi. Dengan force: true, semua table
// di database akan didrop dan semua model yang saat ini ada di kode 
// akan dibuatkan tablenya
db.sequelize.sync({force: true}).then(() => {
  console.log('Drop and Resync Db');
  initial();
});

// disini kita mensetting aplikasi untuk berjalan di port sesuai file
// .env atau jika tidak ada di 8080
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}.`);
});

// ini adalah fungsi yang dipanggi setelah proses sinkronisasi
function initial() {
  
}

				
			

Aplikasi dapat dijalankan dengan memasukan command ini console

				
					node run ./server.js
				
			

Setelah ini kita akan belajar untuk memasukkan struktur model, controller dan route dalam aplikasi

Terima kasih sudah membaca, semoga harimu bahagia

Leave a Reply

Your email address will not be published. Required fields are marked *

Leave a Reply

Your email address will not be published. Required fields are marked *