Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Sequelize] Membuat slug otomatis
#1
Lightbulb 
Untuk menerapkan logika di mana kolom slug secara otomatis terisi berdasarkan kolom nama_produk, Anda bisa menggunakan model Sequelize dengan hook untuk secara otomatis mengisi slug setiap kali terjadi operasi create atau update.

Contoh implementasinya seperti ini:

  1. Buat Model Produk dengan kolom nama_produk dan slug.
  2. Gunakan hook beforeCreate dan beforeUpdate di dalam model untuk mengisi nilai slug sebelum data disimpan.

Berikut contoh kode lengkapnya:

Code:
const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize('postgres://user:password@localhost:5432/database_name');

// Helper untuk membuat slug
const generateSlug = (name) => {
    return name
        .toLowerCase()
        .replace(/[^a-z0-9]+/g, '-') // Ganti karakter selain alfanumerik dengan "-"
        .replace(/^-+|-+$/g, '');    // Hilangkan "-" di awal atau akhir
};

// Definisikan model Produk
const Produk = sequelize.define('Produk', {
    nama_produk: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    slug: {
        type: DataTypes.STRING,
        unique: true,
    }
}, {
    hooks: {
        beforeCreate: (produk) => {
            produk.slug = generateSlug(produk.nama_produk);
        },
        beforeUpdate: (produk) => {
            produk.slug = generateSlug(produk.nama_produk);
        }
    }
});

// Sinkronisasi model ke database
(async () => {
    try {
        // Contoh penggunaan
        const produkBaru = await Produk.create({
            nama_produk: 'Produk Baru Contoh',
        });
       
        console.log(produkBaru.toJSON());
    } catch (error) {
        console.error("Error:", error);
    }
})();
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)