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

Belajarlah dari bawah dan nikmati prosesnya...
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

 

Terima kasih sudah membaca, semoga harimu bahagia

Leave a Reply

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

×

Hello!

Silahkan bergabung dengan Komunitas Sekolah Siber

× Bantuan