如今,我正在玩NestJS,并试图了解NestJS世界的最佳实践。
根据官方文档,我为名为“ Cat”的业务对象创建了service / dto / entity / controller。
(也使用SequelizeJS)
cat.entity.ts
@Table({
freezeTableName: true,
})
export class Cat extends Model<Cat> {
@AllowNull(false)
@Column
name: string;
@Column
breed: string;
}
create-cat.dto.ts
export class CreateCatDto {
@IsString()
readonly name: string;
@IsString()
readonly breed: string;
}
cat.service.ts
export class CatService {
constructor(@Inject('CAT_REPOSITORY') private readonly CAT_REPOSITORY: typeof Cat) {}
async create(createCatDto: CreateCatDto): Promise<Cat> {
const cat = new Cat();
cat.name = createCatDto.name;
cat.breed = createCatDto.breed;
return await cat.save();
}
}
现在,我可以向控制器发出POST请求,并成功创建Cat对象。但是我想从其他服务创建一个“猫”,create()
方法仅使用我不能/不应该初始化的CreateCatDto
(它是只读的)。
如何通过其他服务呼叫create(createCatDto: CreateCatDto)
?您如何使用NestJS处理此类要求?我是否应该再创建一种类似createFromEntity(cat: Cat)
的方法并使用它?
尝试一下:
const cat: CreateCatDto = { name: 'Miau', breed: 'some' };