如何转换数据库实体User
:
class User {
public firstName: string;
public lastName: string;
public phone?: string;
public email: string;
public status: EUserState;
public tokens: Token[];
public password: string;
}
进入DTO实体
GetUserDTO
:class GetUserDTO {
public id: number;
public firstName: string;
public lastName: string;
public phone?: string;
public email: string;
}
在 typescript 中?我正在使用
@nestjs
, class-validator
和 class-transformer
包,但我没有找到任何方法来使用它们来实现这一点。有人可能会说,拥有 DTO 对此毫无意义,但我们在服务器和客户端之间共享 DTO 以维护 API 结构。
有任何想法吗?
最佳答案
有几种方法可以实现您想要的
Domain
手动映射型号到 DTOs
使用 static
来自 Domain
的函数或 DTO
export class Domain {
...
static toDTO(domain: Domain) {
// mapping goes here
}
}
或者
export class Dto {
...
static fromDomain(domain: Domain) {
// mapping goes here
}
}
automapper-ts
, @wufe/mapper
, @nartc/automapper
(我的库),或 morphism
class-transformer
也可以被认为是一个映射器,但是,如果你想从一个模型映射到另一个模型,那么 class-transformer
真的不能那样做。
关于typescript - 在 TypeScript 和 NestS 中将类转换为类/对象(实体到 DTO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60139683/