Membuat Restfull Api Menggunakan Express JS, ORM Sequelize dan MySQL Part 2: CRUD and Validation

Firman
JavaScript Indonesia Community
4 min readOct 22, 2020
Image from Toptal article

lanjut dari artikel sebelumnya setelah kita selesai menginisiasi projek kita untuk terkoneksi ke database mysql menggunakan sequelize kali ini kita akan membuat CRUD nya.

Mari kita ngoding — pertama mari kita buat tabel baru lagi, kali ini contoh kasus nya kita akan membuat list employe, setelah sebelumnya kita membuat tabel users. struktur kolomnya contoh serperti ini

  1. employe_name string panjang karakter 100
  2. employe_role enum
  3. employe_phone_number panjang karakter 20
  4. employe_address panjang karakter 225
$ npx sequelize-cli model:generate — name Employe — attributes employe_name:string,employe_role:enum,employe_phone_number:string,employe_address:string

lalu buka file migration employe hasil generate melalui terminal tadi di folder database/migrations disini kita akan mendefinisikan panjang karakter setiap tipe data dan membuat validasi not null, dan mengubah file model employe kita, edit filenya seperti pada gambar dibawah ini

struktur tabel employe
model employe dan validation

lanjut kita membuat seeder untuk employe dulu dengan mengetikan perintah sebagai berikut

$ npx sequelize-cli seed:generate — name demo-employe
seeder-employe

setelah itu kita edit file migrate tabel yang udah kita buat tadi dan insert data dummy nya dengan perintah sebagai berikut

$ npx sequelize-cli db:migrate$ npx sequelize-cli db:seed:all

jangan lupa cek datanya sudah masuk atau belum ke database dan tabel kita, lanjut setelah itu kita install beberpa package untuk membuat crud restfull kita

$ npm install cors dotenv helmet nodemon

lanjut buat file environment dengan nama file .env di folder root projek kita isi sebagai berikut untuk port bebas sesuai selera temen2 asal jangan bentrok dengan port existing yang berjalan di os teman-teman

# file.envTZ=Asia/Jakarta
APP_PORT=3000

setelah itu buat file dengan nama server.js di folder root projek kita

server.js

dan edit file package.json menjadi seperti pada gambar di bawah ini untuk menambahkan perintah start app kita menjadi npm start

package.json

lanjut buat folder dengan nama controllers dan routes kurang lebih nanti struktur folder app kita seperti ini

struktur app

didalam folder routes buat file bernama index.js dan isikan sebagai berikut

yuk testing dulu aplikasi nya buka browser dan keikan url localhost:3000 jika mengikuti tutorial ini portnya 3000 jika teman-teman mengubah port nya sesuaikan dengan port yang teman-teman inisiasikan

$ npm start
default not found

kenapa not found karena kita mendefinisikan di router kita untuk akses / kita tidak mendefinisikan apapun karena yang kita definisikan yaitu http://localhost:3000/api/v1

api index

lanjut buat file dengan nama employeRoutes.js di folder routes dan buat file bernama employeController.js di folder controllers dan isi sebagai berikut

employe routes
employe controller

untuk dokumentasi lengkap tentang sequelize bisa kunjungin halaman ini https://sequelize.org/master/index.html disitu dokumentasi nya lumayan lengkap dari mulai validasi, model query raw atau by method seperti FindAll() FindByPk() dan lain sebagainya

next buka aplikasi rest client contoh postman atau insomnia disini saya menggunakan insomnia disini kita punya 5 endpoint sebagai berikut

GET http://localhost:3000/api/v1/employePOST http://localhost:3000/api/v1/employebody{
"employe_name":"depa panjie",
"employe_role":"hrd"
}
untuk method post kita coba post kolom emnploye role dengan enum yang tidak sesuai contoh valuenya backendGET http://localhost:3000/api/v1/employe/:idPUT http://localhost:3000/api/v1/employe/:idbody{
"employe_name":"depa panjie",
"employe_role":"hrd"
}
DELETE http://localhost:3000/api/v1/employe/:id
list employe
save employe success
save employe gagal
update employe
delete employe
get by id employe

okay mungkin segitu untuk part 2 inisiasi CRUD dan valdiation nya next kita lanjut nanti part 3 Login, Logout, Registratiron, Validation, semoga bermanfaat :)))

--

--