nestjs 实体到 dto 这是最佳实践吗?

nestjs entity to dto Is this a best practice?

user.entity.ts

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  firstName: string;

  @Column()
  lastName: string;

  @Column({ default: true })
  isActive: boolean;
}

创建用户-dto.ts

export class CreateUserDto extends PartialType(User) {}

此代码有效。 这是最佳做法吗?

根据我的经验,这绝不是最佳实践,dto 和实体不应严格绑定。你在混淆逻辑。

例如,考虑一下,以这种方式很难在您的 dto 字段上添加验证。 此外,数据模型的更改并不总是会触发客户端的更改(例如,FE 端的表单,其中表单的字段通过 dto 发送到 BE)。

最后,还要考虑到有时您可能需要将存储库与 controller/dtos 部分分开,因为它们“存在于”不同的流中。 (例如 AWS lambda)。