Dto到实体和dto从实体
Dto to entity and dto from entity
在我的应用程序中,我需要多次从实体(数据库模型)映射到 DTO(本地对象)
大多数时候,D 与实体同名
例如实体
export class CompanyModel extends BaseEntity {
constructor(init?: Partial<CompanyModel>) {
}
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ length: 500 })
name: string;
@Column({ length: 500, unique: true })
email: string;
....
}
DTO
export class Company {
@ApiProperty()
id: string;
@ApiProperty()
email: string;
@ApiProperty()
name: string;
...
}
现在我添加静态函数 toModel
和 fromModel
static toModel(companyDto :CreateCompanyDto ) : CompanyModel {
const companyModel = new CompanyModel();
const {name, email,..... } = companyDto;
companyModel.name = name;
companyModel.email =email
.....
return companyModel;
}
在 nestjs/node 中将 DTO 映射到 ENTITY 的最佳解决方案是什么
好吧,这取决于您还计划用您的 dto 做些什么。在我的应用程序中,我对我的 dto-s 进行了大量预处理或 post 处理。这是一个例子,我想限制电子邮件的格式 属性:
export class Company {
@ApiProperty()
id: string;
@ApiProperty()
@Transform(value => value.toLowerCase())
email: string;
@ApiProperty()
name: string;
...
}
如果你打算使用这些转换,我建议使用 class-transformer: classToPlain
, plainToClass
方法,这样你就可以安全有效地从 dto 对象转换你的数据到一个实体实例。您甚至可以对 类.
进行不同的转换
static toModel(companyDto: CreateCompanyDto ): CompanyModel {
const data = classToPlain(companyDto);
return plainToClass(CompanyModel, data);
}
您可以在我上面提到的 link 上找到更多信息。它甚至可以帮助您 control the properties on your dtos or how to change their behaviour 基于不同的用例。
在我的应用程序中,我需要多次从实体(数据库模型)映射到 DTO(本地对象)
大多数时候,D 与实体同名
例如实体
export class CompanyModel extends BaseEntity {
constructor(init?: Partial<CompanyModel>) {
}
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ length: 500 })
name: string;
@Column({ length: 500, unique: true })
email: string;
....
}
DTO
export class Company {
@ApiProperty()
id: string;
@ApiProperty()
email: string;
@ApiProperty()
name: string;
...
}
现在我添加静态函数 toModel
和 fromModel
static toModel(companyDto :CreateCompanyDto ) : CompanyModel {
const companyModel = new CompanyModel();
const {name, email,..... } = companyDto;
companyModel.name = name;
companyModel.email =email
.....
return companyModel;
}
在 nestjs/node 中将 DTO 映射到 ENTITY 的最佳解决方案是什么
好吧,这取决于您还计划用您的 dto 做些什么。在我的应用程序中,我对我的 dto-s 进行了大量预处理或 post 处理。这是一个例子,我想限制电子邮件的格式 属性:
export class Company {
@ApiProperty()
id: string;
@ApiProperty()
@Transform(value => value.toLowerCase())
email: string;
@ApiProperty()
name: string;
...
}
如果你打算使用这些转换,我建议使用 class-transformer: classToPlain
, plainToClass
方法,这样你就可以安全有效地从 dto 对象转换你的数据到一个实体实例。您甚至可以对 类.
static toModel(companyDto: CreateCompanyDto ): CompanyModel {
const data = classToPlain(companyDto);
return plainToClass(CompanyModel, data);
}
您可以在我上面提到的 link 上找到更多信息。它甚至可以帮助您 control the properties on your dtos or how to change their behaviour 基于不同的用例。