C. NestJs Provider
1. Apa itu Provider?
- Provider digunakan sebagai service, repository, factory, helper, dan lain-lain
- NestJS akan meng-inject provider ke module yang menggunakan provider tersebut Depedency Injection sehingga provider dapat digunakan oleh seluruh module
- Pada NestJS provider diberikan decorator
@Injactable()
pada class
app.service.tsx
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { LatihanModule } from './latihan/latihan.module';
@Module({
imports: [LatihanModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
2. Latihan membuat Provider
Pada latihan kali ini kita akan membuat provider yaitu service. Service adalah class yang digunakan untuk menaruh logic - logic yang di panggil oleh controller maupun service lain.
Seperti contoh gambar di atas dimana service akan menghubungkan antara contoller dengan model dan database, sehingga pada service kita bisa membuat logic untuk menyimpan data , menghapus data, mengupdate data dan menampilkan data
untuk membuat service di nestjs kita bisa menggukakan nest cli seperti berikut
Jika berhasil maka kita akan mendapatkan pesan seperti di bawah
ihsanabuhanifah@ihsanabuhanifah-MacBook-Pro backend-nestjs % npx nest g service latihan
CREATE src/latihan/latihan.service.spec.ts (467 bytes)
CREATE src/latihan/latihan.service.ts (91 bytes)
UPDATE src/latihan/latihan.module.ts (262 bytes)
ihsanabuhanifah@ihsanabuhanifah-MacBook-Pro backend-nestjs %
Dari pesan tersebut kita melihat nest cli sudah membuat file baru dengan nama latihan.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class LatihanService {}
kemudian secara otomatis controller juga terimport otomatis pada file latihan.module.ts
import { Module } from '@nestjs/common';
import { LatihanController } from './latihan.controller';
import { LatihanService } from './latihan.service';
@Module({
controllers: [LatihanController],
providers: [LatihanService],
})
export class LatihanModule {}
Selanjutkan kita akan latihan untuk membuat service yang akan di panggil di controller. Pertama kita akan buat service dengan nama getLatihan pada latihan.service.ts seperti berikut
import { Injectable } from '@nestjs/common';
@Injectable()
export class LatihanService {
getLatihan(): string {
return 'latihan';
}
}
Kemudian service tersebut kita akan panggil pada controller dengan mengguankan Dependency injection
constructor(private latihanService: LatihanService) {}
sehingga seperti code di bawah
import {
Body,
Controller,
Delete,
Get,
Param,
Post,
Put,
Query,
} from '@nestjs/common'; //import Get
import { LatihanService } from './latihan.service';
interface payloadDto {
name: string;
age: number;
}
interface QueryLatihanDto {
name?: string;
age_start?: number;
age_end?: number;
}
@Controller('latihan') // base url
export class LatihanController {
constructor(private latihanService: LatihanService) {}
@Get('/list')
getLatihan() {
return this.latihanService.getLatihan(); // arti kode ini ketika routing di panggil maka function getLatihan pada controll akan memanggil service getLatihan
}
...
}
Kemudian kita tes di postman sebagai berikut