NEST.JS - OverView: Providers
Providers
Services
// cats.service.ts
import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';
@Injectable()
export class CatsService {
private readonly cats: Cat[] = [];
create(cat: Cat) {
this.cats.push(cat);
}
findAll(): Cat[] {
return this.cats;
}
}
ヒントCLIを使用してサービスを生成するには、
$ nest g service cats
コマンドを発行します.// interfaces/cat.interface.ts
export interface Cat {
name: string;
age: number;
breed: string;
}
// cats.controller.ts
import { Controller, Get, Post, Body } from '@nestjs/common';
import { CreateCatDto } from './dto/create-cat.dto';
import { CatsService } from './cats.service';
import { Cat } from './interfaces/cat.interface';
@Controller('cats')
export class CatsController {
constructor(private catsService: CatsService) {}
@Post()
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
@Get()
async findAll(): Promise<Cat[]> {
return this.catsService.findAll();
}
}
Dependency injection
constructor(private catsService: CatsService) {}
Scopes
Custom providers
Optional providers
import { Injectable, Optional, Inject } from '@nestjs/common';
@Injectable()
export class HttpService<T> {
constructor(@Optional() @Inject('HTTP_OPTIONS') private httpClient: T) {}
}
Property-based injection
import { Injectable, Inject } from '@nestjs/common';
@Injectable()
export class HttpService<T> {
@Inject('HTTP_OPTIONS')
private readonly httpClient: T;
}
Provider registration
// app.module.tsJS
import { Module } from '@nestjs/common';
import { CatsController } from './cats/cats.controller';
import { CatsService } from './cats/cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class AppModule {}
src |
|cats
| |dto
| |create-cat.dto.ts
| |interfaces
| |cat.interface.ts
| |cats.controller.ts
| |cats.service.ts
|app.module.ts
|main.ts
Manual instantiation
Reference
この問題について(NEST.JS - OverView: Providers), 我々は、より多くの情報をここで見つけました https://velog.io/@rkdden12/NEST.JS-OverView-Providersテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol