Many To Many обновление записи TypeORM
Есть отношение Many-To-Many в NestJS приложении. Посетители могут иметь несколько типов, а типы могут иметь несколько посетителей.
Вот что имеется на данный момент, но я не знаю, можно ли избежать visitorService в данном случае. Возможно ли такое? Т.е я хочу сделать добавление, без инъекции сервиса посетителей
constructor(
@InjectRepository(VisitorTypeEntity)
private visitorTypeRepository: Repository<VisitorTypeEntity>,
private visitorService: VisitorService,
) {}
async addVisitor(id: number, visitorId) {
const type = await this.visitorTypeRepository.findOne(
{ id },
{ relations: ['visitors'] },
);
const visitor = await this.visitorService.getById(visitorId);
type.visitors = [...type.visitors, visitor];
return await this.visitorTypeRepository.save(type);
}
Ответы (1 шт):
Автор решения: Alexander Chernykh
→ Ссылка
async addOrRemoveVisitor(id: number, visitorId, remove = false) {
remove
? await this.visitorTypeRepository
.createQueryBuilder()
.relation(VisitorTypeEntity, 'visitors')
.of(visitorId)
.remove(id)
: await this.visitorTypeRepository
.createQueryBuilder()
.relation(VisitorTypeEntity, 'visitors')
.of(visitorId)
.add(id);
return { updated: true };
}