Hari 11: Sequelize ORM

30 Hari Javascript

·

3 min read

Hari 11: Sequelize ORM

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.

https://raw.githubusercontent.com/AsrulLove/img-db/master/xampp.png

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.

https://raw.githubusercontent.com/AsrulLove/img-db/master/phpmyadmin.png

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.

https://miro.medium.com/max/1572/1*klzv0Ev8tTw7PafogculEQ.jpeg

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.

https://raw.githubusercontent.com/AsrulLove/img-db/master/sequelize-init.png

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.

https://raw.githubusercontent.com/AsrulLove/img-db/master/new-db.png

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

https://raw.githubusercontent.com/AsrulLove/img-db/master/model-user.png

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.

https://raw.githubusercontent.com/AsrulLove/img-db/master/hasil-generate.png

Sekarang model dan tabel sudah selesai, kita siap untuk melakukan CRUD terhadap data tabel yang telah kita miliki.