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)。
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)。