Node.js Dto到实体和Dto从实体
在我的应用程序中,我需要多次从实体(数据库模型)映射到DTO(本地对象) 大多数情况下,数据必须与实体具有相同的名称 例如实体Node.js Dto到实体和Dto从实体,node.js,rest,mapping,nestjs,Node.js,Rest,Mapping,Nestjs,在我的应用程序中,我需要多次从实体(数据库模型)映射到DTO(本地对象) 大多数情况下,数据必须与实体具有相同的名称 例如实体 export class CompanyModel extends BaseEntity { constructor(init?: Partial<CompanyModel>) { } @PrimaryGeneratedColumn('uuid') id: string; @Column({ length: 500 }) name:
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;
....
}
现在我添加了静态函数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映射到实体的最佳解决方案是什么?好吧,这取决于,您还计划用DTO做哪些其他事情。在我的应用程序中,我对dto-s进行了大量的预处理或后处理。下面是一个示例,我想限制电子邮件属性的格式:
出口类公司{
@ApiProperty()
id:字符串;
@ApiProperty()
@转换(value=>value.toLowerCase())
电子邮件:字符串;
@ApiProperty()
名称:字符串;
...
}
如果您计划使用这些转换,我建议使用:classToPlain
,plainToClass
方法,这样您就可以安全有效地将数据从dto对象转换为实体实例。您甚至可以对两个类进行不同的转换
静态toModel(companyDto:CreateCompanyDto):CompanyModel{
const data=classToPlain(companyDto);
返回plainToClass(公司模型、数据);
}
你可以在我上面提到的链接上找到更多信息。它甚至可以帮助您,如何在您的DTO上运行,或者如何基于不同的用例运行。好吧,这取决于您在DTO上还计划了哪些其他事情。在我的应用程序中,我对dto-s进行了大量的预处理或后处理。下面是一个示例,我想限制电子邮件属性的格式:
出口类公司{
@ApiProperty()
id:字符串;
@ApiProperty()
@转换(value=>value.toLowerCase())
电子邮件:字符串;
@ApiProperty()
名称:字符串;
...
}
如果您计划使用这些转换,我建议使用:classToPlain
,plainToClass
方法,这样您就可以安全有效地将数据从dto对象转换为实体实例。您甚至可以对两个类进行不同的转换
静态toModel(companyDto:CreateCompanyDto):CompanyModel{
const data=classToPlain(companyDto);
返回plainToClass(公司模型、数据);
}
你可以在我上面提到的链接上找到更多信息。它甚至可以帮助您,如何在DTO上运行,或者如何基于不同的用例运行?我使用这个库将实体映射到DTO,但反过来也应该可以?我使用这个库将实体映射到DTO,但反过来也应该可以。如果我的实体有3个属性{a,b,c},并且我的DTO包含2个属性{a,b},我编写了{const data=classToPlain(entity);返回plainToClass(DTO,data);我得到了所有3个属性{a,b,c},那么它是如何工作的呢?谢谢你必须明确地公开属性并跳过未列入白名单的属性。你可以在这里阅读更多内容:如果我的实体有3个属性{a,b,c},并且我的dto包含2个属性{a,b},并且我编写了{const data=classToPlain(entity),那么在NestJS@24sharoni中使用Plainto类是最好的解决方案;返回Plainto类(Dto,data);我得到了所有3个属性{a,b,c},那么它是如何工作的呢?感谢您必须明确地公开属性并跳过非白名单属性。您可以在这里阅读更多内容:在NestJS@24sharon中使用plainToClass是最好的解决方案
static toModel(companyDto :CreateCompanyDto ) : CompanyModel {
const companyModel = new CompanyModel();
const {name, email,..... } = companyDto;
companyModel.name = name;
companyModel.email =email
.....
return companyModel;
}