В настоящее время я играю с NestJS и пытаюсь понять лучшие практики мира NestJS.
Следуя официальной документации, я создал сервис / dto / entity / controller для моего бизнес-объекта под названием ' Cat '.
(также с использованием 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.Но я хочу создать 'Cat' из другого сервиса, и метод create()
принимает только CreateCatDto
, который я не могу / не должен инициализировать (он доступен только для чтения).
Как позвонить create(createCatDto: CreateCatDto)
из других служб?Как вы справляетесь с такого рода требованиями с NestJS?Должен ли я создать еще один метод, например createFromEntity(cat: Cat)
, и использовать его?