Membuat Restfull Api Menggunakan Expressjs, Orm Sequelize dan Mysql Part 1 : Inisiasi Sequelize
Kali ini kita akan membuat sebuah aplikasi restfullapi dengan menggunakan expressjs dan sequelize, fitur-fitur yang akan dibuat yaitu
- Inisiasi Sequelize
- CRUD and Validation
- Login, Registratiron, Validation, and Set JWT
- Verify Api With Jwt Using Middleware
- Logout and Verify Token Blacklist
Mari kita ngoding — pertama buat folder contoh dengan nama restfull-api-sequelize, setelah itu masuk ke terminal dan arahkan ke direktori projek kita dan ketikan perintah sebagai berikut untuk inisiasi projek kita
$ npm init
setelah selesai menginisiasi projek kita, mari kita install package sequelize dengan perintah sebagai berikut
$ npm install -g npx$ npm install sequelize sequelize-cli mysql2
sebelum melakukan inisiasi konfigurasi sequelizenya teman-teman bisa mengcustom atau bisa menggunakan by default untuk struktur konfigurasinya jika ingin di custom buat file dengan nama .sequelizerc lalu isi dengan code seperti ini
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')};
dari kode diatas bisa dilahat saya mengkelompokan folder models, seeders, migrations di dalam folder database langkah selanjutnya kita inisiasi konfigurasi sequelizenya dengan perintah sebagi berikut
$ npx sequelize-cli init
setelah itu mari kita ubah file migrationConfig.js dan membuat sebuah file index.js di dalam folder config dengan code sebagai berikut :
//migrationConfig.jsconst config = require('./index')
const cfg = {}cfg[config.environment] = config.sequelizemodule.exports = cfg
// index.jsconst conf = {};conf.environment = 'development';conf.sequelize = {};conf.sequelize.username = ''; //database usernameconf.sequelize.password = ''; //database password kosongkan jika tidak pakai passwordconf.sequelize.database = ''; //isi dengan nama databaseconf.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;
Membuat file migration dan models, seperti pada orm umumnya sequelize juga menyediakan command untuk generate model dan migration melalui cli dokumentasi lengkapnya disini atau dengan mengetikan perintah sebagai berikut di terminal untuk melihat command-command yang tersedia
$ npx sequelize-cli
$ npx sequelize-cli model:generate --name Users --attributes username:string,fullname:string,email:string,password:string
teman teman bisa mengubah schema nya sesuai kebutuhan contoh kolom fullname cuma butuh 50 karakter saja tinggal ubah di type: Sequlize.STRING(50) dokumentasi lengkapnya ada disini
lanjut kita akan migrasi model atau tabel yang sudah kita generate tadi dengan perintah sebagai berikut
$ npx sequelize-cli db:migrate
untuk memastikan tabel yang kita buat tadi sudah tercreate di database cek di database kita apakah tabel tersebut sudah ada atau belum buka aplikasi database manager kita seperti phpmyadmin atau lainnya disini saya menggunakan aplikasi DBeaver, contoh tabel sudah terbuat akan ada dua tabel yaitu Sequelizemeta dan Users yang sudah kita definisikan tadi ketika generate model
membuat seeder, seeder secara singkat yaitu dummy data atau sample data sebuah model contoh disini saya akan memebuat dummy data user dengan perintah sebagai berikut
$ npx sequelize-cli seed:generate — name demo-user
setelah seeder terbuat buka file nya di folder seeder dan edit seperti gambar dibawah ini jangan lupa install dahulu package password hash karena disini saya menggunakan nya untuh hasing password
$ npm install password-hash
function : up ini berfungsi untuk memasukan data ke model users kita saat kita menjalankan perintah npx sequelize-cli db:seed:all sedangkan function : down untuk mengosongklan kembali isi tabel kita saat menjalankan perintah npx sequelize-cli db:seed:undo:all okay mari kita jalankan perintah seednya
$ npx sequelize-cli db:seed:all
setelah dijalankan buka database kita dan cek ke tabel kita apakah data sudah masuk atau belum di script seeder di atas saya memasukan dummy data users hanya 100 data temen2 bisa cutom misalkan mau 200 atau 1000 sesuai keinginan saja
lanjut misalkan kita mau mengosongkan kembali tabel users kita ketikan perintah sebagai berikut
$ npx sequelize-cli db:seed:undo:all
cek kembali di database tabel kita jangan lupa refreh tabel nya dan cek datanya sudah kosong kembali atau belum
mungkin untuk tahap awal sekian dulu tulisan dari saya lanjut nanti PART 2 :)))
source code