Membangun API dengan Node.js Express Part 2: Membuat Model

1280px-Node.js_logo.svg_

Model merupakan cetakan dari entitas yang akan kita gunakan dalam aplikasi kita. Untuk menentukan model apa saja yang perlu dibuat dalam aplikasi, kita harus merancang susunan database yang akan kita gunakan. Sebuah model akan merepresentasikan sebuah table pada database. Sekarang mari kita membuat model user dan role di aplikasi kita.

Masukkan kode berikut ke app/models/user.model.js

module.exports = (sequelize, Sequelize) => {
  const User = sequelize.define("users", {
    username: {
      type: Sequelize.STRING
    },
    email: {
      type: Sequelize.STRING
    },
    password: {
      type: Sequelize.STRING
    }
  });
  return User;
};

Dan masukkan kode berikut ke dalam app/models/role.model.js

module.exports = (sequelize, Sequelize) => {
  const Role = sequelize.define("roles", {
    id: {
      type: Sequelize.INTEGER,
      primaryKey: true
    },
    name: {
      type: Sequelize.STRING
    }
  });
  return Role;
};

Kemudian mari kita pindahkan kode yang sebelumnya berada di server js ke app/models/index.js sehingga isinya sebagai berikut

const config = require("../config/db.config.js");
const Sequelize = require("sequelize");
const sequelize = new Sequelize(
  config.DB,
  config.USER,
  config.PASSWORD,
  {
    host: config.HOST,
    dialect: config.dialect,
    operatorsAliases: false,
  }
);
const db = {};
db.Sequelize = Sequelize;
db.sequelize = sequelize;
db.user = require("../models/user.model.js")(sequelize, Sequelize);
db.role = require("../models/role.model.js")(sequelize, Sequelize);
db.role.belongsToMany(db.user, {
  through: "user_roles",
  foreignKey: "roleId",
  otherKey: "userId"
});
db.user.belongsToMany(db.role, {
  through: "user_roles",
  foreignKey: "userId",
  otherKey: "roleId"
});
db.ROLES = ["user", "admin", "moderator"];
module.exports = db;

disini kita membuat relasi many to many antara entitas user dan model, dimana seorang user bisa memiliki beberapa role, dan sebuah role bisa dimiliki oleh beberapa user.

Kode untuk koneksi pada server.js bis akita hapus karena sudah kita pindahkan ke app/models/index.js. Sekarang server.js berisi berikut

const express = require("express");
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
const db = require("./app/models");
const Role = db.role;
db.sequelize.sync({force: true}).then(() => {
  console.log('Drop and Resync Db');
  initial();
});
app.get("/", (req, res) => {
  res.json({ message: "App is running" });
});
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}.`);
});
function initial() {
  Role.create({
    id: 1,
    name: "user"
  });
  Role.create({
    id: 2,
    name: "moderator"
  });
  Role.create({
    id: 3,
    name: "admin"
  });
}

Setelah merunning program sekali, ganti blok

db.sequelize.sync({force: true}).then(() => {
  console.log('Drop and Resync Db');
  initial();
});

menjadi

db.sequelize.sync();

untuk menghindari penghapusan data

Setelah ini kita akan mempelajari membuat controller dan route

Sumber:

Share postingan ini:

Leave a Reply

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