Всем привет, дорогие друзья! Подскажите пожалуйста, есть проблема с обновлением relations в entity.
Пример сущности тренера:
@Entity()
export class Trainer {
@OneToMany(() => Social, (social: Social) => social.trainer, {
cascade: true,
})
socials: Social[];
}
Пример сущности соц сети:
@Entity()
export class Social {
@ManyToOne(() => Trainer, (trainer) => trainer.socials)
trainer: Trainer;
}
При создании всё отрабатывает корректно, используя следующий код:
const trainer = this.trainerRepository.create(createTrainerInput);
await this.trainerRepository.save(trainer);
При использовании метода update, получаю слкющую ошибку:
Error: Cannot query across one-to-many for property socials
at _loop_4 (D:\starsup\src\query-builder\QueryBuilder.ts:1030:27)
at UpdateQueryBuilder.QueryBuilder.createPropertyPath (D:\starsup\node_modules\typeorm\query-builder\QueryBuilder.js:907:17)
at UpdateQueryBuilder.createUpdateExpression (D:\starsup\src\query-builder\UpdateQueryBuilder.ts:387:18)
at UpdateQueryBuilder.getQuery (D:\starsup\src\query-builder\UpdateQueryBuilder.ts:48:21)
at UpdateQueryBuilder.QueryBuilder.getQueryAndParameters (D:\starsup\src\query-builder\QueryBuilder.ts:446:28)
at UpdateQueryBuilder.<anonymous> (D:\starsup\src\query-builder\UpdateQueryBuilder.ts:106:50)
at step (D:\starsup\node_modules\tslib\tslib.js:143:27)
at Object.next (D:\starsup\node_modules\tslib\tslib.js:124:57)
at fulfilled (D:\starsup\node_modules\tslib\tslib.js:114:62)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
Такое решение создает новый элемент вместо обновления:
const trainer = await this.trainerRepository.findOne({ id });
for (const [key, value] of Object.entries(updateTrainerInput)) {
trainer[key] = value;
}
await this.trainerRepository.save(trainer);
Как решить проблему правильно ?