Olá galera, boa tarde! estou com uma duvida no Array de produto.
Quando tento passar um Array ele retorna o seguinte erro:
Não sei como fazer para passar o array corretamente.
Se eu passar ele vazio, consigo cadastrar o produto.
Segue meu código:
produto.controller
import { Body, Controller, Post, Get } from '@nestjs/common';
import { ProdutoRepository } from './produto.repository';
import { CriaProdutoDTO } from 'src/produtos/dto/CriaProduto.dto';
import { ProdutoEntity } from './validacao/produto.entity';
import { ListaProdutoDTO } from './dto/ListaProduto.dto';
import { v4 as uuid } from 'uuid';
@Controller('/produtos')
export class ProdutoController {
constructor(private produtoRepository: ProdutoRepository) {}
@Post()
async criaProduto(@Body() dadosDoProduto: CriaProdutoDTO) {
const produtoEntity = new ProdutoEntity();
produtoEntity.caracteristicas = dadosDoProduto.caracteristicas;
produtoEntity.categoria = dadosDoProduto.categoria;
produtoEntity.descricao = dadosDoProduto.descricao;
produtoEntity.imagens = dadosDoProduto.imagens;
produtoEntity.nome = dadosDoProduto.nome;
produtoEntity.quantidade = dadosDoProduto.quantidade;
produtoEntity.valor = dadosDoProduto.valor;
produtoEntity.id = uuid();
this.produtoRepository.salvar(produtoEntity);
return {
produto: new ListaProdutoDTO(produtoEntity.id, produtoEntity.nome, produtoEntity.caracteristicas),
message: 'Produto Criado com Sucesso.' };
}
@Get()
async listProdutos() {
const produtosSalvos = await this.produtoRepository.listar();
const produtosLista = produtosSalvos.map(
produtos => new ListaProdutoDTO(
produtos.id,
produtos.nome,
produtos.caracteristicas
)
);
return produtosLista;
}
}
produto.repository
import { Injectable } from '@nestjs/common';
import { ProdutoEntity } from './validacao/produto.entity';
@Injectable()
export class ProdutoRepository {
private produtos: ProdutoEntity[] = [];
async salvar(produto: ProdutoEntity) {
this.produtos.push(produto);
}
async listar() {
return this.produtos;
}
}
CriaProduto.dto
import { IsArray, IsNotEmpty, IsPositive, MaxLength, ValidateNested } from "class-validator";
import { CaracteristicaProdutoDTO } from "./CaracteristicaProduto.dto";
import { ImagemProdutoDTO } from "./ImagemProduto.dto";
import { Type } from "class-transformer";
export class CriaProdutoDTO {
@IsNotEmpty({message: "Nome não pode ser vazio"})
nome: string;
valor: number;
@IsPositive({message: "Quantidade tem que ser possitiva."})
quantidade: number;
@IsNotEmpty()
@MaxLength(1000)
descricao: string;
@Type(() => CaracteristicaProdutoDTO)
@IsArray()
@ValidateNested()
caracteristicas: CaracteristicaProdutoDTO[];
@Type(() => CaracteristicaProdutoDTO)
@IsArray()
@ValidateNested()
imagens: ImagemProdutoDTO[];
@IsNotEmpty()
categoria: string;
}
CaracteristicaProduto.dto
export class CaracteristicaProdutoDTO {
nome: string;
descricao: string;
}
ImagemProduto.dto
export class ImagemProdutoDTO {
nome: string;
descricao: string;
}
produto.entity
import { CaracteristicaProdutoDTO } from "../dto/CaracteristicaProduto.dto";
import { ImagemProdutoDTO } from "../dto/ImagemProduto.dto";
export class ProdutoEntity {
id: string;
nome: string;
valor: number;
quantidade: number;
descricao: string;
caracteristicas: CaracteristicaProdutoDTO[];
imagens: ImagemProdutoDTO[];
categoria: string;
}