Penggunaan Sequelize Pada ORM Node JS - CRUDPRO

Penggunaan Sequelize Pada ORM Node JS

untuk kalian yang baru masuk ke proyek Node.js atau untuk kalian yang belum memakai ORM dalam proyek yang kalian lakukan. Artikel ini akan mengulas pemakaian ORM Sequelize yang paling simpel dalam implementasi yang sempat saya kerjakan.

Saat sebelum masuk ke pemakaian kemungkinan kalian menanyakan — bertanya, ORM kepanjangan dari Objek Relational Mapping, coba mulai disimpulkan dari kepanjangannya, kemungkinan kalian akan mengetahui apakah itu ORM.

sesudah pahami dari kepanjangan ORM, silahkan kita saksikan dari sumber di internet yang saya peroleh dari wiki, ulasan di stackoverflow, artikel berikut. Ringkasan yang saya bisa dari sejumlah sumber di atas, ORM ialah sebuah tehnik untuk ubah data dari database ke objek yang sesuai bahasa yang digunakan, hingga gampang untuk dipakai.

Masuk ke ide RESTful API, tahapan ini ialah tahapan pembuatan sebuah mode, untuk mempermudah inisiasi proyek silakan dapat memakai tool yang telah ada, framework yang saya pakai di sini yaitu kilat, kalian bisa juga memakai express-generator untuk pemakaian dari tools itu dapat kalian mencari di internet.

Sesudah proyek ter-inisiasi setelah itu lakukan instalasi sequelize memakai command untuk npm: npm install --save sequelize sequelize-cli mysql2 karena pada proyek ini saya memakai database mysql, dan untuk yarn: yarn add sequelize sequelize-cli mysql2, peranan dari sequelize-cli di sini yaitu untuk memudahkan untuk membuat file migrasi, seeder, dan lain-lain.

Catatan : saya menggunakan yarn —

Langkah awal ialah lakukan inisiasi proyek memakai sequelize dengan command node_modules/.bin/sequelize init dan akan tercipta folder migrations, seeders, models dan config, tetapi karena saya tidak sukai dengan formasi folder yang semacam itu, saat sebelum lakukan inisialisasi saya golongkan dengan memakai file .sequelizerc dengan kode seperti berikut, hingga folder yang ada masuk ke sebuah folder database dan config.

const path = require('path');

module.exports = {
  'config': path.resolve('config', 'migrationConfig.js'),
  'models-path': path.resolve('database', 'models'),
  'seeders-path': path.resolve('database', 'seeders'),
  'migrations-path': path.resolve('database', 'migrations')
};

Saat sebelum meneruskan ke cara seterusnya, kalian wajib melakukan perubahan pada file migrationConfig.js dan membuat suatu file indeks.js dalam folder config, dengan masing-masing file seperti berikut:

const conf = {};
conf.environment = 'development';
conf.sequelize = {};
conf.sequelize.username = 'root';
conf.sequelize.password = '';
conf.sequelize.database = 'sequelize_train';
conf.sequelize.host = '127.0.0.1';
conf.sequelize.dialect = 'mysql';
conf.sequelize.port = 3306;
conf.sequelize.define = {
  charset: 'utf8mb4',
    dialectOptions: {
    collate: 'utf8mb4_unicode_ci'
  }
}
conf.ROUND_SALT = 8;
module.exports = conf;

Pada file indeks.js di atas ialah penataan yang dipakai dalam proyek yang kita sedang lakukan, ada nama database sequelize_train itu memiliki arti harus dipertambah dengan manual dalam database yang selanjutnya dapat kita pakai untuk proyek ini.

const config = require('./index')

const cfg = {}
cfg[config.environment] = config.sequelize;

module.exports = cfg

Pada file migrationConfig.js bukan menambah baris kode itu tetapi mereplace semua isi migrationConfig.js, selanjutnya buat file migrasi untuk (sebagai contoh — table Users) membuat suatu table di database dengan memakai command node_modules/.bin/sequelize migration:generate --name create-users-table dan file migrasi akan ter-create dalam folder migrations selanjutnya ubah file itu sesuai attribut yang diharapkan. Untuk file yang saya bikin ialah seperti pada bawah:

module.exports = {
  // eslint-disable-next-line
  up: async (queryInterface, Sequelize) => await queryInterface.createTable('users', {
    id: {
      type: Sequelize.UUID,
      primaryKey: true,
      defaultValue: Sequelize.UUIDV1
    },
    name: {
      type: Sequelize.STRING,
      defaultValue: '',
      allowNull: false
    },
    email: {
      type: Sequelize.STRING(126),
      defaultValue: '',
      allowNull: false,
      unique: true
    },
    phone_number: {
      type: Sequelize.STRING,
      allowNull: true,
      defaultValue: ''
    },
    gender: {
      type: Sequelize.STRING,
      defaultValue: '',
      allowNull: false
    },
    password: {
      type: Sequelize.STRING,
      allowNull: true,
      defaultValue: null
    },
    created_at: {
      type: Sequelize.DATE(),
      allowNull: false,
      defaultValue: Sequelize.fn('NOW')
    },
    updated_at: {
      type: Sequelize.DATE(),
      allowNull: false,
      defaultValue: Sequelize.fn('NOW')
    }
  }),
  down: queryInterface => queryInterface.dropTable('users')
}

Selanjutnya lakukan command ini node_modules/.bin/sequelize db:migrate untuk jalankan semua file migration yang sudah dibikin, dalam kasus ini satu file create-users-table.js, sesudah sukses pada command line selanjutnya yakinkan tabel betul-betul ada check pada database.

Cara setelah itu membuat file seeders, yakni masukkan data standar supaya database tidak pada kondisi kosong, umumnya dipakai untuk masukkan data yang dipakai untuk login pertama kalinya, atau data yang dipakai pertama saat inisialisasi proyek. Masukan command node_modules/.bin/sequelize seed:generate --name users-table-seeders maka ada file baru pada folder database/seeders selanjutnya ubah sesuai field yang dibikin saat migrasi.

const bcrypt = require('bcrypt');
const config = require('../../config');

function hashPassword (password) {
  return bcrypt.hashSync(password, config.ROUND_SALT);
}

module.exports = {
  up: queryInterface => queryInterface.bulkInsert('users', [{
    id: '6d730960-1133-11e8-b815-ef31569eb8a0',
    name: 'Jason Web',
    email: '[email protected]',
    phone_number: '552863',
    gender: 'L',
    password: hashPassword('password')
  }]),

  down: queryInterface => queryInterface.bulkDelete('users', null, {})
}

Kemudian kerjakan command node_modules/.bin/sequelize db:seed:all selanjutnya kontrol ke dalam database maka ada satu data hasil dari seeding.

Keringanan seperti hal di atas akan menolong untuk percepat pembuatan proyek. Selanjutnya tentang pemakaian sequelize akan dipost pada artikel seterusnya, seperti pemakaian dalam mode dan langkah menggunakan untuk digabungkan dengan controller.