Tutorial Migration dengan Node JS

Hi Guys,

Apa kabar kalian hari ini? Semoga baik-baik saja. Kali ini gw akan share tutorial mengenai migrasi di nodejs.

Migrasi merupakan sebuah hal yang penting bagi kalian yang ingin memulai sebuah project yang membutuhkan koneksi ke database. Dengan menggunakan migrasi, kalian bisa mengontrol table dan datamelalui cli. Kalau zaman dulu tuh, kalau mau koding gw harus oper-operan flash disc supaya bisa ngopi database atau gw sync database via hosting gitu. Ya itu zaman dulu sih, kalau sekarang ya ga begitu lagi. Untuk lebih jelas, mari kita langsung ke tutorialnya.

Berikut step by stepnya :

  1. Install dependency yang dibutuhkan.
  2. Setelah menginstall dependency, mari kita buat folder config yang berisi mysql.json. File ini kelak digunakan untuk konfigurasi database yang akan berisi table dan data migrasi. Yang perlu diingat adalah harus tetap membuat database karena yang dimigrasi adalah table dan datanya, bukan database secara keseluruhan. Berikut file mysql.json :
    Disana gw buat 3 tipe environment, karena memang standardnya ada 3 environment yang dipakai ketika akan menjalankan sebuah project. Tetapi di tutorial kali ini, kita hanya akan menggunakan environment development.  Cuma karena gw gamw ribet, gw copy paste aja tuh parameternya biar sama semua hehe.
  3. Bagian berikutnya adalah membuat file config yang akan dijalankan sequelize ketika akan melakukan migrasi. Disini sebenarnya bisa dibuat otomatis oleh sequelize dengan cara init, tapi gw akan membuat secara manual. Berikut contohnya :
  4. Setelah semua siap, yang paling penting adalah command line yang akan digunakan untuk melakukan migrasi. Disini gw akan membuatnya menjadi versi script npm. Berikut scriptnya :
    Nah pertama yang harus dilakukan pada saat menjalankan script migrasi adalah melakukan init:migration. Ini dipakai untuk membuat folder migration. Sebenarnya bisa sih buat folder sendiri, cuma biar keren kita buatin secara otomatis.

    Sequelize Init Migration

    Sequelize Init Migration

    Lalu berikutnya adalah init:models. Ini dipakai untuk membuat folder models sekaligus script index.js yang gw sendiri belum tau gunanya buat apa hehehe.

    Sequelize Init Model

    Sequelize Init Model

    Setelah models yang terakhir adalah init seeders. Initialize ini untuk tempat penyimpanan data yang kelak akan dimigrasi nantinya.

    Sequelize Init Seeders

    Sequelize Init Seeders

    Setelah semua initialize selesai, maka bentuk foldernya akan seperti berikut :

    Folder Structure

    Folder Structure

    Abaikan folder yang lain ya. Soalnya itu tutorial yang lain yakni tutorial rabbitmq. Jadi 3 init yang tadi akan menghasilkan folder migrations, models dan seeders. Ketiga folder tersebut ada di dalam folder mysql.

    Sekarang lanjut ke bagian membuat model, bagian ini tidak hanya akan membuat model tapi juga migrasi filenya. Kita akan membuat table bernama books dengan field id, book_name, book_author, book_year, createdAt dan updatedAt. field id, createdAt, dan updatedAt dibuat otomatis oleh sequelize create model dan gw males otak-atik karena tutorial ini cuma untuk nunjukkin cara kerja sequelize jadi ga perlu custom-custom banget lah hehe.

    Sequelize Create Model

    Sequelize Create Model

    Nah untuk resultnya bisa dicek di folder migrations dan models. Untuk file yang difolder migration bentuknya seperti ini.

    Sedangkan untuk file yang di folder models bentuknya seperti ini.

    Karena skema table sudah selesai dibuat tinggal di generate, maka yang berikutnya adalah menyiapkan seeder dan isi data dari table tersebut. Nah untuk membuat seedernya, yang perlu digunakan adalah seed:create.

    Sequelize Seed:create

    Sequelize Seed:create

    Berikut file generate dari seed:create.

    Cuma disini ada yang perlu dicustom yakni function up dan down. Isi function up adalah menginsert semua data yang ada di dalam books.json sedangkan function down adalah untuk menghapus semua isinya. Jadi nanti pada saat setelah generate pasti dapatnya isi function kosongan. Kudu dicustom sendiri ya nanti. Untuk file books.jsonnya seperti berikut.

    Oke karena semua persiapan sudah beres mari kita lakukan migrasi table books ke database tutorial_book. Untuk commandnya adalah.

    Sequelize Run Migrate

    Sequelize Run Migrate

    Setelah berhasil, bisa dicek databasenya. Seharusnya sudah ada table books.

    Table Books

    Table Books

    Yang perlu diperhatikan adalah saat melakukan migrasi, sequelize akan membuatkan sebuah table bernama sequelizemeta. Biarkan saja karena kita tidak akan mengotak-ngatik table tersebut. Yang perlu diperhatikan adalah skema table books. Apakah sudah sesuai dengan yang sudah kita deklarasikan sebelumnya?

    Table Books Schema

    Table Books Schema

    Jika sudah selesai, maka lanjut lagi untuk mengisi datanya. Jika belum, coba dicek lagi, apakah ada yang kelewatan mungkin langkahnya. Kalau masih bingung bisa coba googling ya. Jangan males deh.

    Nah bagian yang terakhir adalah mengisi table dengan data yang telah kita deklarasikan sebelumnya di books.json. Untuk commandnya adalah.

    Sequelize Run Seed

    Sequelize Run Seed

    Jika sudah berhasil, maka seharusnya table books sudah ada isinya dan sesuai dengan yang dibuat di books.json. Berikut hasilnya.

    Result Table Books

    Result Table Books

Nah untuk yang mau coba-coba kodingnya, silahkan fork githubnya disini.

Oke, demikian sedikit tutorialnya. Semoga bermanfaat bagi para pembaca disini hehe.

Leave a Reply