No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Resolviendo la relación muchos a muchos en el controlador

23/33
Recursos

Aportes 3

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Apuntes

modificamos el dto

import {
  IsString,
  IsNumber,
  IsUrl,
  IsNotEmpty,
  IsPositive,
  IsArray,
} from 'class-validator';
import { PartialType, ApiProperty } from '@nestjs/swagger';

export class CreateProductDto {
	...

  // Agregamos este campo
  @IsArray()
  @IsNotEmpty()
  @ApiProperty()
  readonly categoriesIds: number[];

}

export class UpdateProductDto extends PartialType(CreateProductDto) {}

Create

Modificaremos el metodo para crear un producto

// src\products\services\products.service.ts
async create(data: CreateProductDto) {
    const newProduct = this.productRepo.create(data);
    if (data.brandId) {
      const brand = await this.brandRepo.findOne(data.brandId);
      newProduct.brand = brand;
    }

	// Aqui resolvemos la categoria
    if (data.categoriesIds) {
      const categories = await this.categoryRepo.findByIds(data.categoriesIds);
      newProduct.categories = categories
    }

    return this.productRepo.save(newProduct);
  }

Find

// src\products\services\products.service.ts
async findOne(id: number) {
    const product = await this.productRepo.findOne(id,{
      relations: ['brand', 'categories']
    });
    if (!product) {
      throw new NotFoundException(`Product #${id} not found`);
    }
    return product;
  }

Find of categories

// src\products\services\categories.service.ts
async findOne(id: number) {
    const category = await this.categoryRepo.findOne(id,{
      relations: ['products']
    });
    if (!category) {
      throw new NotFoundException(`Category #${id} not found`);
    }
    return category;
  }

Buenas la forma correcta de revisar categoriesId en el dto es

@ApiProperty()
  @IsArray()
  @ArrayMinSize(1)
  @IsNumber({}, { each: true })
  readonly categoriesId: number[];

De esta manera te revisa que tenga al menos 1 elemento el arrray y que los elementos sean numbers

En caso tal estén haciendo cambios y no los vean reflejados al hacer las peticiones, deben hacer build npm run build y luego volver a correr el proyecto. Otra solución es eliminar la carpeta dist y volver a correr el proyecto.