Sebelum kita masuk ke materi database, kita siapkan tools nya dulu yah, yang dibutuhkan selain yang sudah kita install sebelumnya adalah MySQL, biar gak ribet installnya baik di Linux, Windows, atau Mac saya sama ratakan saja memakai XAMPP.
Bisa download disini
Jika sudah download pastikan MySQL berjalan dengan baik sehingga kita bisa membuka database di http://localhost/phpmyadmin (mungkin sedikit berbeda dilaptop Anda, silahkan disesuaikan), seperti berikut.
Sampai disitu, Anda sudah siap melanjutkan Express kembali.
Model dan Sequelize
Pada 30 hari javascript kita akan membuat konsep MVC dimana kita akan pisahkan Model View dan Controller. Controller telah dibahas sebelumnya, dan saatnya sekarang kita bahas Model.
Model yang kita gunakan memakai library dari sequelize. Sequelize adalah ORM untuk NodeJs.
Install Sequelize Cli
Tools command line atau cli yang dapat kita gunakan melalui terminal untuk menggenerate sequelize, maka Sequelize cli harus diinstall terlebih dahulu dengan cara.
npm i -g sequelize-cli
Catatan: mungkin mac dan linux butuh sudo.
Install Sequelize
Pada folder proyek express-30-js
install sequelize dengan cara:
npm i sequelize
Sehingga package.json
seperti berikut.
{
"name": "express-30",
"version": "1.0.0",
"description": "belajar expres bersama asrul.dev",
"main": "index.js",
"scripts": {
"test": "echo \\"Error: no test specified\\" && exit 1"
},
"author": "Asrul harahap",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"sequelize": "^5.21.3"
}
}
Initisalize Sequelize
Agar proyek dikenali menggunakan sequelize, lakukan perintah berikut.
sequelize init
Perhatikan gambar berikut.
Maka akan menghasilkan folder seeders, models, dan config.
Koneksi Database
Database yang kita gunakan adalah MySQL, untuk menjalankan mysql, sequelize membutuhkan library tambahan yaitu mysql2
. Install dengan cara.
npm i mysql2
Sehingga file package.json
menjadi seperti berikut.
{
"name": "express-30",
"version": "1.0.0",
"description": "belajar expres bersama asrul.dev",
"main": "index.js",
"scripts": {
"test": "echo \\"Error: no test specified\\" && exit 1"
},
"author": "Asrul harahap",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"mysql2": "^2.1.0",
"sequelize": "^5.21.3"
}
}
Konfigurasi database dengan membuka file config.json
dan sesuaikan dengan MySql Anda. Kira-kira seperti ini.
{
"development": {
"username": "root",
"password": "",
"database": "db_30_hari",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
},
"production": {
"username": "root",
"password": null,
"database": "database_production",
"host": "127.0.0.1",
"dialect": "mysql",
"operatorsAliases": false
}
}
Sesuai dengan file config.json
, buat database dengan nama db_30_hari. Perhatikan gambar berikut.
Membuat Model
Setelah database dibuat, kita pindah ke terminal untuk membuat Model, pada contoh ini nama model yang kita buat adalah User.
sequelize-cli model:generate --name User --attributes name:string,label:string,picture:string,email:string,phone:string,website:string,summary:string
Perhatigan gambar berikut
Akan menghasilkan file dengan nama user.js
pada folder model yang hasilnya seperti berikut.
"use strict";
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define(
"User",
{
name: DataTypes.STRING,
label: DataTypes.STRING,
picture: DataTypes.STRING,
email: DataTypes.STRING,
phone: DataTypes.STRING,
website: DataTypes.STRING,
summary: DataTypes.STRING,
},
{}
);
User.associate = function (models) {
// associations can be defined here
};
return User;
};
Migrate Model
Model yang telah dibuat, hanya sebtas file saja. Untuk mengubah file model ke tabel pada database maka lakukan migrate db dengan perintah berikut.
sequelize-cli db:migrate
Maka akan menghasilkan seperti berikut.
Sekarang model dan tabel sudah selesai, kita siap untuk melakukan CRUD terhadap data tabel yang telah kita miliki.