I am trying to convert the categories entity to an categories dto but I am running into some issues here.
CategoriesController
@Post()
async createCategory(
@Body() createCategoryDto: CreateCategoryDto,
): Promise<CategoriesDto> {
return await this._categoryService.createCategory(createCategoryDto);
}
CategoriesService
async createCategory(
createCategoryDto: CreateCategoryDto,
): Promise<CategoriesDto> {
const newCategory =
await this._categoryRepository.createCategory(createCategoryDto);
return new CategoriesDto(newCategory);
}
CategoriesRepository
async createCategory(
createCategoryDto: CreateCategoryDto,
): Promise<Categories> {
try {
const newCategory = this._repository.create(createCategoryDto);
return await this._repository.save(newCategory);
} catch (err) {
throw new InternalServerErrorException(err);
}
}
DTO's
export class BaseCategoryDto {
@IsNotEmpty()
name: string;
@Optional()
description: string;
constructor(category: Categories) {
this.name = category.name;
this.description = category.description;
}
}
export class CategoriesDto extends BaseCategoryDto {
id: string;
constructor(category: Categories) {
super(category);
this.id = category.id;
}
}
export class UpdateCategoriesDto extends CategoriesDto {}
export class CreateCategoryDto extends BaseCategoryDto {}
I was expecting to receive an object looking like this:
"category": {
"name": "Pije",
"description": null,
"id": "644f6010-ddf1-4f13-adef-339a42cfaeb5"
}
but instead I got an error saying
TypeError: Cannot read properties of undefined (reading 'name')
at new BaseCategoryDto (src\categories\categories.dto.ts:13:26)
at new CreateCategoryDto (src\categories\categories.dto.ts:29:1)
at TransformOperationExecutor.transform (node_modules\src\TransformOperationExecutor.ts:160:22)
at ClassTransformer.plainToInstance (node_modules\src\ClassTransformer.ts:77:21)
at Object.plainToClass (node_modules\src\index.ts:71:27)
at ValidationPipe.transform (node_modules\@nestjs\common\pipes\validation.pipe.js:60:39)
at node_modules\@nestjs\core\pipes\pipes-consumer.js:16:33
at processTicksAndRejections (node:internal/process/task_queues:95:5)