Tutorial NestJS Untuk Backend REST API Bag. 2: Koneksi ke Basis Data MySQL

api Sep 16, 2019

Sebuah perangkat lunak bisa saja memiliki fungsi untuk menyimpan data ke basis data. Untuk menyimpan data, biasanya menggunakan perangkat lunak seperti MySQL, SQLite, atau MongoDB dengan komunikasi menggunakan ORM (Object-relational Mapping).

NestJS memiliki tiga dukungan ORM yaitu TypeORM, Sequelize dan Mongoose. Dalam tutorial ini hanya akan menggunakan TypeORM. Keunggulan TypeORM di NestJS daripada ORM lain adalah TypeORM dan Nest Framework sama-sama dibangun menggunakan bahasa Typescript sehingga keduanya bisa terintegrasi dengan baik.

Berikut langkah-langkah menyambungkan basis data MySQL ke sebuah aplikasi Nest Framework menggunakan TypeORM:

  1. Install dependensi

Untuk memulainya, kita akan menginstall dependensi TypeORM. Kita akan menggunakan MySQL sebagai basis datanya.

$ npm install --save @nestjs/typeorm typeorm mysql
TypeORM Nest dependensi

2. Buat basis data di MySQL

Sekarang kita akan membuat basis data yang akan kita sambungkan ke aplikasi Nest kita di MySQL.

CREATE DATABASE hello;
Membuat database di MySQL

3. Buat Konfigurasi Koneksi

Sekarang kita akan membuat konfigurasi untuk koneksinya di AppModule dengan mengimpor dan menggunakan TypeOrmModule.

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'hello',
      entities: [__dirname + '/**/*.entity{.ts,.js}']
    }),
  ],
})
export class AppModule {}
Konfigurasi Koneksi TypeORM di AppModule

Selesai, aplikasi hello world kita sudah terkoneksi ke basis data MySQL dengan nama basis data hello. Sesuaikan username dan password dengan konfigurasi MySQL Anda.

4. Tambahan: TypeORM CLI

TypeORM memiliki kemampuan CLI yang bisa digunakan untuk membuat entiti, migrasi, dll. Jika kita membuat konfigurasi koneksi seperti no. 3 di atas, maka kita tidak bisa menggunakan CLI-nya TypeORM.

Sebagai alternatif, kita bisa membuat konfigurasi berbasis json.

Buat berkas bernama ormconfig.json di root proyek ini, isikan konfigurasinya

{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "username": "root",
  "password": "root",
  "database": "hello",
  "entities": ["src/**/*.entity{.ts,.js}"],
}
Konfigurasi JSON TypeORM

Sekarang hapus konfigurasi di AppModule dan hanya panggil TypeOrmModule.forRoot()

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

@Module({
  imports: [TypeOrmModule.forRoot()],
})
export class AppModule {}

Nest Framework akan otomatis menggunakan ormconfig.json dan dengan ini kita bisa menggunakan fungsi dari TypeORM CLI juga.