Membuat CRUD Sederhana Menggunakan Expressjs Dan MySQL PART 2 : Konfigurasi Database

ExpressJS

Lanjut dari tahapan sebelumnya setelah kita selesai menginisiasi projek kita selanjutnya kita coba mengkonfigurasi aplikasi kita dengan database mysql dan juga package orm sequelize. 

Kenapa memilih sequelize alesan nya karena biar lebih mudah dan lebih simple dalam query sql data karena sudah tersedia method-method nya tidak menggunakan raw queries. Di sequelize juga mendukung raw queries jika teman-teman terbiasa dan suatu saat butu untuk melakukan queries secara raw.

Konfigurasi database

Package yang akan kita gunakan yaitu npx, sequelize, sequelize-cli, dan mysql2 buka terminal dan arahkan ke folder projek aplikasi lanjut dari part sebelumnya, di part sebelumnya jika teman-teman belum mengikuti bisa cek disini.

npm install -g npx
npm install dotenv 
npm install sequelize sequelize-cli mysql2

Selanjutnya buat folder di root projek kita dengan nama .sequlizerc disini kita akan mengcostum konfigurasinya berikut code nya.

const path = require('path');
module.exports = {
    'config': path.resolve('config', 'migrationConfig.js'),
    'models-path': path.resolve('database', 'models'),
    'seeders-path': path.resolve('database', 'seeders'),
    'migrations-path': path.resolve('database', 'migrations')
};

Setelah package terinstall dan konfgurasi sudah dibuat lalu ketikan perintah sebagai berikut :

npx sequelize-cli init

Jika berhasil nanti folder aplikasi kita akan ada folder baru seperti pada gambar dibawah ini :

Struktur aplikasi

Lanjut buat file dengan nama .env

ENV= #environment
DB_USER= #database username
DB_PASS= #database password kosongkan jika tidak pakai password
DB_NAME= #isi dengan nama database
DB_HOST= #isi dengan db host localhost atau 127.0.0.1

Lalu ubah file migrationConfig.js dan buat file dengan naman index.js di folder config

// migrationConfig.js
const config = require('./index') 
const cfg = {}
cfg[config.environment] = config.sequelize
module.exports = cfg
// index.js
require("dotenv").config()

const conf = {}
conf.environment = process.env.ENV //environment
conf.sequelize = {}
conf.sequelize.username = process.env.DB_USER //database username
conf.sequelize.password = process.env.DB_PASS //database password kosongkan jika tidak pakai password
conf.sequelize.database = process.env.DB_NAME //isi dengan nama database
conf.sequelize.host = process.env.DB_HOST //isi dengan db host localhost atay 127.0.0.1
conf.sequelize.dialect = 'mysql'
conf.sequelize.port = 3306
conf.sequelize.define = {
  charset: 'utf8mb4', 
    dialectOptions: {
    collate: 'utf8mb4_unicode_ci'
  }
}
conf.ROUND_SALT = 8
module.exports = conf

Sampai disini tahapan untuk konfigurasi aplikasi kita sudah berjalan buka terminal kembali dan kita akan mengecek ada perintah apa sih di sequelize-cli kita dengan cara mengetikan perintah ini.

npx sequelize-cli
List perintah sequelize-cli

Lanjut kita akan membuat file migration dan model dengan nama tabel Blogs ketikan perintah seperti ini.

npx sequelize-cli model:generate --name Blogs --attributes judul:string,deskripsi:text,gambar:text

Jika berhasil nanti akan ada pesan new model was created dan new migration was created sejauh ini pembuatan model dan migration sudah berhasil untuk tipe data ketika membuat migration dan model teman-teman bisa baca di situs nya https://sequelize.org/v5/manual/data-types.html.

Lalu kita akan menjalanakan file migrasi yang sudah berhasil kita buat tadi dengan cara mengetikan perintah sebagai berikut

npx sequelize-cli db:migrate

Untuk memastikan tabel yang kita buat tadi sudah terbuat di database kita cek di database kita apakah tabel tersebut sudah ada atau belum buka aplikasi database manager kita seperti phpmyadmin atau lainnya disini saya menggunakan aplikasi DBeaver, contoh tabel sudah terbuat akan ada dua tabel yaitu Sequelizemeta dan Blogs yang sudah kita definisikan tadi ketika generate model. 

Langkah selanjutnya kita akan membuat seeder, seeder secara singkat yaitu dummy data atau sample data sebuah model contoh disini saya akan memebuat dummy data user dengan perintah sebagai berikut.

npx sequelize-cli seed:generate --name demo-blogs

Buka file seeder kita di folder database/seeders lalu edit file nya disini kita akan membuat data dumy blog 20 data tambahkan code berikut di function up:

const blogs = [];
for (let i = 0; i < 20; i++) {
    blogs.push({
        judul: `judul artikel${i}`,
        deskripsi: `Lorem Ipsum is simply dummy text of the printing and typesetting industry. 
        Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an 
        unknown printer took a galley of type and scrambled it to make a type specimen book. 
        It has survived not only five centuries, but also the leap into electronic typesetting, 
        remaining essentially unchanged. It was popularised in the 1960s with the 
        release of Letraset sheets containing Lorem Ipsum passages, and more recently 
        with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.`,
        gambar: `image${i}.png`,
        createdAt: new Date(),
        updatedAt: new Date()
    });
}
return queryInterface.bulkInsert('Blogs', blogs, {});

Di function down : tambahkan code berikut

return queryInterface.bulkDelete('Blogs', null, {
    truncate: true
});

function : up ini berfungsi untuk memasukan data ke tabel kita saat kita menjalankan perintah npx sequelize-cli db:seed:all sedangkan function : down untuk mengosongklan kembali isi tabel kita saat menjalankan perintah npx sequelize-cli db:seed:undo:all

Okay mari kita jalankan perintah seednya dengan perintah sebagi berikut

npx sequelize-cli db:seed:all 

Cek kembali di database kita di tabel blogs data dummy tersebut sudah masuk atau belum jika teman-teman ingin mengosongkan nya ketikan perintah seperit ini.

npx sequelize-cli db:seed:undo:all

Untuk memastikannya lagi cek kembali database kita di tabel blogs sudah kosong kembali belum tabelnya. Okay untuk part 2 tahapan konfigurasi database untuk aplikasi kita sudah berjalan dengan baik jika ada yang ditanyakan bisa tulis saja dikolom komentar source code nya ada disini

Posting Komentar

0 Komentar