Как ввести простой сервис / провайдер в nest.js - PullRequest
1 голос
/ 17 апреля 2019

Я создал простой класс typeScript в nest.js. JwtTokenService.js

// JwtTokenService.js

import { Injectable, Optional } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { JwtPayload } from '../modules/auth/interface/jwt-payload.interface';

@Injectable()
export class JwtTokenService {
  constructor(private readonly jwtService: JwtService) {}

  async generateJWT(payload: object): Promise<string> {
    payload['type'] = 'access_token';
    const token = this.jwtService.sign({ payload });
    return token;
  }
}

Теперь, как я могу использовать это в любом контроллере. как user, auth и др.

1 Ответ

1 голос
/ 17 апреля 2019

Зарегистрируйте службу в модуле приложения nest:

import { Module } from '@nestjs/common';
import { YourController } from './path-to/your.controller';
import { JwtTokenService } from './path-to/JwtTokenService.service';

@Module({
  controllers: [YourController],
  providers: [JwtTokenService],
})
export class ApplicationModule {}

Затем вы можете использовать его в своем контроллере:

import { Controller, Get, Post, Body } from '@nestjs/common';
import { JwtTokenService } from './path-to/JwtTokenService.service';

@Controller('your')
export class YourController {
  constructor(private readonly jwtTokenService: JwtTokenService) {}

  @Get()
  async get() {
    // use `this.jwtTokenService`
    ...
  }
}

В гнезде используется шаблон DependencyInjection для предоставления услуги контроллеру, поэтому необходимо указать способ предоставления услуги в модуле приложения.

...