Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Dto到实体和Dto从实体_Node.js_Rest_Mapping_Nestjs - Fatal编程技术网

Node.js 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:

在我的应用程序中,我需要多次从实体(数据库模型)映射到DTO(本地对象)

大多数情况下,数据必须与实体具有相同的名称

例如实体

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;
}