33
loading...
This website collects cookies to deliver better user experience
nest generate / nest g
Nombre | Alias | Descripción |
---|---|---|
controller | co | Crear un controlador simple en la ruta que le demos |
provider | pr | Crear un proveedor o servicio |
pipe | pi | Genera el código para un nuevo pipe |
gateway | ga | Podemos crear un gateway para el uso de Socket.io |
guard | gu | Como en Angular los Guards son para la seguridad y esto nos dará lo básico en el nuevo |
npm i --save @nestjs/config
PORT=3000
CORS='true'
LOGGER='true'
DB_HOST='xxx.xxx.xxx.xxxx'
DB_PORT='xxxx'
DB_USER='xxxxxxxx'
DB_PASSWORD='xxxxxxxxxxx'
DB_DATABASE='xxxxxxxxx'
export const config = () => ({
port: Number(process.env.PORT),
cors: process.env.CORS === 'true',
logger: process.env.LOGGER === 'true',
database: {
type: 'mysql',
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
},
});
...
import { ConfigModule } from '@nestjs/config';
import { config } from './config'
....
@Module({
imports: [
...
ConfigModule.forRoot({
isGlobal: true,
load: [config]
}),
...
],Ï
...
})
export class AppModule {}
import { Logger } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const configService = app.get(ConfigService);
const cors = configService.get('CORS') === 'true';
if (cors) {
app.enableCors();
}
const logger = configService.get('LOGGER') === 'true';
if (logger) {
app.useLogger(new Logger());
}
await app.listen(configService.get('PORT'));
console.log(`Application is running on: ${await app.getUrl()}`);
}
bootstrap();
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { TypeOrmOptionsFactory } from '@nestjs/typeorm';
@Injectable()
export class DatabaseConfig implements TypeOrmOptionsFactory {
constructor(private configService: ConfigService) {}
createTypeOrmOptions() {
const config = this.configService.get('database');
return config;
}
}
...
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { config } from './config';
import { DatabaseConfig } from './database.config';
....
@Module({
imports: [
...
ConfigModule.forRoot({
isGlobal: true,
load: [config]
}),
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useClass: DatabaseConfig
}),
...
],Ï
...
})
export class AppModule {} ****
...
LOGGER_LEVELS='error,warn,log,verbose,debug'
...
export const config = () => ({
...
loggerLevels: process.env.LOGGER_LEVELS.split(',') || [],
...
});
nest g pr providers/mylogger/mylogger.provider
import { Injectable, Logger, Scope } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Injectable({ scope: Scope.TRANSIENT })
export class MyLoggerProvider extends Logger {
levels: string[] = ['error', 'warn', 'log', 'verbose', 'debug'];
constructor(private config: ConfigService) {
super();
this.levels = this.config.get('loggerLevels');
}
log(message: string, context?: string) {
if (this.levels.includes('log')) {
super.log(message, context);
}
}
error(message: string, trace?: string, context?: string) {
if (this.levels.includes('error')) {
super.error(message, trace, context);
}
}
warn(message: string, context?: string) {
if (this.levels.includes('warn')) {
super.warn(message, context);
}
}
debug(message: string, context?: string) {
if (this.levels.includes('debug')) {
super.debug(message, context);
}
}
verbose(message: string, context?: string) {
if (this.levels.includes('verbose')) {
super.verbose(message, context);
}
}
}
import { MyLoggerProvider } from 'providers/mylogger/mylogger.provider';
import { ConfigService } from '@nestjs/config';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
...
if (logger) {
app.useLogger(new MyLoggerProvider(configService));
}
...
}
bootstrap();
npm i --save @nestjs/swagger swagger-ui-express
import { MyLoggerProvider } from 'providers/mylogger/mylogger.provider';
import { ConfigService } from '@nestjs/config';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
...
const config = new DocumentBuilder()
.setTitle('My new API')
.setDescription('Swagger for my new API')
.setVersion('1.0')
.addBearerAuth(
{ type: 'http', scheme: 'bearer', bearerFormat: 'JWT' },
'XYZ',
)
.build();
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('swagger', app, document);
...
}
bootstrap();
// Controllers
@ApiBearerAuth('XYZ')
@UseGuards(JwtAuthGuard)
@Controller('settings')
// Funciones
@ApiBearerAuth('XYZ')
@UseGuards(JwtAuthGuard)
@Get()
npx @compodoc/compodoc -p tsconfig.json -s