Saat mengembangkan aplikasi dengan database, kamu pasti akan berurusan dengan struktur database dan data awal. Nah, di sinilah migration dan seeding berperan penting!
- Migration membantu kamu mengelola perubahan struktur database.
- Seeding memungkinkan kamu mengisi database dengan data awal (dummy data).
Dalam panduan ini, kita akan belajar:
- Apa itu migration & seeding?
- Kenapa penting?
- Cara membuat migration di Sequelize
- Cara membuat seeder di Sequelize
- Praktik terbaik dalam migration & seeding
Mari kita mulai!
1. Apa itu Migration & Seeding?
Migration: Mengelola Struktur Database dengan Mudah
Migration di Sequelize adalah cara sistematis untuk membuat, mengubah, dan menghapus tabel database tanpa harus menulis SQL manual setiap kali ada perubahan.
- Seperti Git untuk database! Kamu bisa membuat versi baru dan kembali ke versi sebelumnya jika ada kesalahan.
- Otomatisasi perubahan struktur database seperti menambahkan atau menghapus kolom.
- Memudahkan kolaborasi dalam tim karena semua perubahan tercatat dalam kode.
Tanpa Migration
- Menulis SQL manual untuk setiap perubahan.
- Sulit rollback jika ada kesalahan.
- Tidak standar antara developer yang berbeda.
Dengan Migration
- Perubahan database tercatat dengan rapi.
- Bisa diubah dan dikembalikan ke versi sebelumnya (rollback).
- Memudahkan tim dalam sinkronisasi database.
Seeding: Mengisi Database dengan Data Dummy
Seeding adalah proses mengisi database dengan data awal secara otomatis.
Membantu testing & development tanpa harus input data manual.
Membuat dummy data untuk pengujian fitur CRUD.
Mempermudah deployment awal dengan data default yang dibutuhkan aplikasi.
2. Instalasi Sequelize CLI
Sebelum menggunakan migration dan seeding, pastikan Sequelize sudah diinstal.
Instal Sequelize dan Database Driver
npm install --save sequelize sequelize-cli
npm install --save pg pg-hstore # Untuk PostgreSQL
npm install --save mysql2 # Untuk MySQL
npm install --save sqlite3 # Untuk SQLite
Kemudian, inisialisasi Sequelize dalam proyek:
npx sequelize-cli init
Ini akan membuat beberapa folder penting:
├── config
│ ├── config.json // Konfigurasi database
├── models
│ ├── index.js // Mengatur koneksi database
├── migrations // Folder untuk migration
├── seeders // Folder untuk seeder
3. Membuat dan Menjalankan Migration
Membuat Migration Baru
Gunakan perintah berikut untuk membuat migration:
npx sequelize-cli model:generate --name User --attributes name:string,email:string,age:integer
Ini akan menghasilkan file di folder migrations/
, misalnya:
migrations/
└── 20250213084523-create-user.js
Menulis Migration Secara Manual
Buka file migration dan edit sesuai kebutuhan:
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable("Users", {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true,
allowNull: false,
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
email: {
type: Sequelize.STRING,
allowNull: false,
unique: true,
},
age: {
type: Sequelize.INTEGER,
allowNull: true,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
},
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable("Users");
},
};
Menjalankan Migration
Setelah menulis migration, jalankan perintah:
npx sequelize-cli db:migrate
Hasilnya, tabel Users
akan dibuat di database!
4. Rollback Migration (Undo Perubahan)
Jika ingin membatalkan migration terakhir:
npx sequelize-cli db:migrate:undo
Jika ingin membatalkan semua migration:
npx sequelize-cli db:migrate:undo:all
5. Membuat dan Menjalankan Seeder
Membuat Seeder Baru
Gunakan perintah berikut:
npx sequelize-cli seed:generate --name demo-users
Ini akan membuat file di seeders/
:
seeders/
└── 20250213085000-demo-users.js
Menulis Seeder
Buka file di seeders/
dan isi dengan data dummy:
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.bulkInsert("Users", [
{
name: "John Doe",
email: "john@example.com",
age: 30,
createdAt: new Date(),
updatedAt: new Date(),
},
{
name: "Jane Doe",
email: "jane@example.com",
age: 25,
createdAt: new Date(),
updatedAt: new Date(),
},
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete("Users", null, {});
},
};
Menjalankan Seeder
Jalankan perintah berikut untuk mengisi database:
npx sequelize-cli db:seed:all
Menghapus Data Seeder
Jika ingin menghapus data yang telah dimasukkan oleh seeder:
npx sequelize-cli db:seed:undo
Jika ingin menghapus semua seeder:
npx sequelize-cli db:seed:undo:all
6. Best Practices dalam Migration & Seeding
- Jangan edit migration yang sudah dijalankan! Jika ada perubahan, buat migration baru.
- Gunakan seeding hanya untuk development/testing, bukan untuk production data.
- Pastikan seeder memiliki timestamp
createdAt
danupdatedAt
. - Gunakan
up()
untuk menambahkan dandown()
untuk menghapus data dengan benar. - Gunakan
.env
untuk mengelola konfigurasi database agar lebih fleksibel.
Kesimpulan: Jadi Master Migration & Seeding di Sequelize!
- Migration membantu mengelola struktur database tanpa SQL manual.
- Seeding memungkinkan pengisian database dengan data awal.
- Sequelize CLI menyediakan perintah mudah untuk membuat migration & seeding.
- Rollback tersedia untuk membatalkan perubahan jika ada kesalahan.
Dengan migration dan seeding, kamu bisa mengembangkan aplikasi dengan database yang lebih terstruktur, fleksibel, dan mudah dikelola.
Sekarang, kamu sudah siap membangun aplikasi database dengan Sequelize seperti seorang profesional!
0 Comments