Que bonito es nest
Introducción
¿Ya terminaste el Curso de NestJS: Programación Modular?
Platzi Store: presentación del proyecto e instalación
Database
Cómo instalar Docker para este proyecto
Configuración de PostgresSQL en Docker
Explorando postgres con interfaces gráficas y terminal
Integración de node-postgres con NestJS
Conexión como inyectable y ejecutando un SELECT
Usando variables de ambiente
TypeORM
¿Qué es un ORM? Instalando y configurando TypeORM Module
Creando tu primera entidad
TypeORM: active record vs. repositories
Crear, actualizar y eliminar
Cambiar a Mysql demo (opcional)
Migraciones
Sync Mode vs. Migraciones en TypeORM
Configurando migraciones y npm scripts
Corriendo migraciones
Modificando una entidad
Relaciones
Relaciones uno a uno
Resolviendo la relación uno a uno en el controlador
Relaciones uno a muchos
Resolviendo la relación uno a muchos en el controlador
Relaciones muchos a muchos
Resolviendo la relación muchos a muchos en el controlador
Manipulación de arreglos en relaciones muchos a muchos
Relaciones muchos a muchos personalizadas
Resolviendo la relación muchos a muchos personalizada en el controlador
Consultas
Paginación
Filtrando precios con operadores
Agregando indexadores
Modificando el naming
Serializar
Migración a NestJS 9 y TypeORM 0.3
Actualizando Dependencias para NestJS 9
Cambios en TypeORM 0.3
Migraciones en TypeORM 0.3
Próximos pasos
Cómo solucionar una referencia circular entre módulos
Continúa con el Curso de NestJS: Autenticación con Passport y JWT
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 3
Preguntas 1
Que bonito es nest
después de los 30 minutos del anterior video, este de 10 parece de 2, cuando me di cuenta ya se había terminado
// src\products\dtos\products.dtos.ts
// Creamos un nuevo dto
export class FilterProductDto{
@IsOptional()
@IsPositive()
@ApiProperty()
limit:number;
@IsOptional()
@Min(0)
@ApiProperty()
offset: number;
}
// src\products\controllers\products.controller.ts
@Get()
@ApiOperation({ summary: 'List of products' })
getProducts(
// Cambiamos la forma de recibir el parametro
@Query() params: FilterProductDto
) {
return this.productsService.findAll(FilterProductDto);
}
// src\products\services\products.service.ts
// Modificamos el servicio
async findAll(params?: FilterProductDto) {
if (params) {
const { limit, offset } = params;
return this.productRepo.find({
relations: ['brand'],
take: limit,
skip: offset,
});
}
return this.productRepo.find({
relations: ['brand'],
});
}
// src\main.ts
// Activamos la transformacion de forma implicita
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
forbidNonWhitelisted: true,
transformOptions: {
enableImplicitConversion: true
}
}),
);
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.