Advertisement

Membuat tabel user dengan sequelize


 

import {Sequelize} from "sequelize";
import db from "../config/Database.js";

const{DataTypes} = Sequelize;

const Users = db.define('users', {}, {
freezeTableName : true
});

export default Users;

 

Kode tersebut adalah bagian dari model dalam Sequelize, yaitu ORM (Object Relational Mapping) untuk Node.js yang digunakan untuk berinteraksi dengan database SQL seperti MySQL, PostgreSQL, SQLite, dan lainnya. Berikut adalah penjelasan secara rinci:

1. Import Module yang Diperlukan

import { Sequelize } from "sequelize";
import db from "../config/Database.js";
  • import { Sequelize } from "sequelize";
    • Mengimpor objek Sequelize dari modul sequelize, yang merupakan pustaka ORM untuk Node.js.
  • import db from "../config/Database.js";
    • Mengimpor konfigurasi database dari file Database.js. File ini biasanya berisi inisialisasi koneksi ke database menggunakan Sequelize.

2. Ekstraksi DataTypes dari Sequelize

const { DataTypes } = Sequelize;
  • DataTypes adalah objek bawaan dari Sequelize yang menyediakan berbagai tipe data yang bisa digunakan dalam model. Contoh tipe data yang sering digunakan adalah:
    • DataTypes.STRING → untuk menyimpan teks
    • DataTypes.INTEGER → untuk angka integer
    • DataTypes.BOOLEAN → untuk nilai true/false
    • DataTypes.DATE → untuk tanggal dan waktu

3. Mendefinisikan Model Users

const Users = db.define('users', {}, {
    freezeTableName : true
});
  • db.define('users', {}, {...}):

    • Digunakan untuk mendefinisikan model Users yang akan berhubungan dengan tabel users di database.
    • Argumen pertama 'users' adalah nama tabel yang akan digunakan dalam database.
    • Argumen kedua {} adalah objek kosong, yang seharusnya berisi skema kolom, tetapi dalam kode ini tidak ada definisi kolom.
    • Argumen ketiga adalah objek konfigurasi yang berisi opsi tambahan.
  • freezeTableName: true:

    • Opsional, tetapi sangat penting. Dengan mengaktifkan opsi ini, Sequelize tidak akan mengubah nama tabel secara otomatis (misalnya menambahkan huruf "s" secara default).
    • Contoh tanpa freezeTableName: true, jika kita menggunakan 'user', Sequelize akan mengubahnya menjadi 'users'.

4. Ekspor Model

export default Users;
  • Mengekspor model Users agar bisa digunakan di file lain dalam proyek.

Kesimpulan

Kode ini mendefinisikan model Users menggunakan Sequelize, tetapi tidak memiliki skema kolom yang jelas. Untuk membuat model yang lebih fungsional, sebaiknya tambahkan properti kolom seperti ini:

Kode yang lebih lengkap:

import { Sequelize } from "sequelize";
import db from "../config/Database.js";

const { DataTypes } = Sequelize;

const Users = db.define('users', {
    id: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    name: {
        type: DataTypes.STRING,
        allowNull: false
    },
    email: {
        type: DataTypes.STRING,
        allowNull: false,
        unique: true
    },
    password: {
        type: DataTypes.STRING,
        allowNull: false
    }
}, {
    freezeTableName: true
});

export default Users;

Penjelasan Tambahan

  • Menambahkan atribut ke model (id, name, email, password).
  • Menentukan primaryKey, autoIncrement, allowNull, dan unique untuk memastikan validasi yang lebih baik.
  • Menjadikan freezeTableName: true tetap aktif, agar nama tabel tidak diubah otomatis oleh Sequelize.

Post a Comment

0 Comments