Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Resolviendo la relación uno a uno en el controlador

19/33
Recursos

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Cambiando el dto user

// src/users/dtos/user.dto
export class CreateUserDto {
  ...

	// Agregamos atributo
  @IsOptional()
  @IsNotEmpty()
  @ApiProperty() 
  readonly customerId: number; 
}

export class UpdateUserDto extends PartialType(CreateUserDto) {}

Modificando la funcion crear

Si el objeto contiene un customerId traemos los datos usando el servicio de customer

//src/users/services/user.service

async create(data: CreateUserDto) {
    const newUser = this.userRepo.create(data);
    if(data.customerId){
      const customer = await this.customerService.findOne(data.customerId);
      newUser.customer = customer;
    }
    return await this.userRepo.save(newUser);
  }

Modificando la funcion find

Si queremos que cuando se consulte al usuario tambien se obtengan los datos del customer debemos agregar la siguiente opcion

async findAll() {
    return await this.userRepo.find({
      relations: ['customer'] // esta
    });
  }

async findOne(id: number) {
  const user = await this.userRepo.findOne(id, {
    relations: ['customer'] // esta
  });
    
	if (!user) {
	    throw new NotFoundException(`User #${id} not found`);
	 }
   return user;
}

Para obtener un usuario con su customer, en el método findOne, pueden hacer el siguiente cambio:

 async findOne(id: number) {
    const user = await this.userRepo.findOne(id, { relations: ['customer'] });
    if (!user) {
      throw new NotFoundException(`User #${id} not found`);
    }
    return user;
  }