介绍:
在Nestjs中,数据传输对象(DTO)用于定义各种操作(例如创建或更新实体)的数据形状。但是,通常在DTO之间具有类似的属性来创建和更新实体,这可能会导致代码中的冗余。在这篇文章中,我们将探讨一种智能的方式,可以使用类继承和 @nestjs/mapped-types软件包提供的partialType实用程序来减少Nestjs dtos的冗余。
。步骤1:安装 @nestjs/papped-types软件包
首先,您需要安装 @nestjs/pappy-types软件包,该软件包提供partialType实用程序:
npm install @nestjs/mapped-types
步骤2:创建用于创建新实体的基本DTO
让我们创建一个用于创建新用户的基本DTO。这将是我们的CreateUserdto:
// create-user.dto.ts
export class CreateUserDto {
firstName: string;
lastName: string;
email: string;
password: string;
}
步骤3:创建一个更新DTO,用于使用类继承和partialType
更新实体现在,我们将通过扩展CreateUserdto和使用PartialType实用程序来创建一个UpdateUserdto。这将使UpdateUserdto中的CreateUserdto可选的所有属性:
// update-user.dto.ts
import { PartialType } from '@nestjs/mapped-types';
import { CreateUserDto } from './create-user.dto';
export class UpdateUserDto extends PartialType(CreateUserDto) {}
结论:
通过使用类继承和partialType实用程序,我们成功地降低了Nestjs dtos中的冗余。 UpdateUserdto从CreateUserdto继承了所有属性,但是由于PartialType实用程序,它们是可选的。这使您的代码保持干燥(不要重复自己),并且可以更轻松地维护。
当您需要更新DTO时,您只需要修改基本DTO(CreateUserdto),并且更改将自动反映在UpdateUserdto中。这种方法可帮助您在Nestjs应用程序中编写更清洁和更可维护的代码。