#node.js #typescript #one-to-many #typeorm #node.js-typeorm
Вопрос:
Я реализовал отношения один к одному и один ко многим между таблицами.
Основной стол Бизнес
@Entity()
export class Business {
@PrimaryGeneratedColumn()
readonly id: number;
@Column({ nullable: true })
name: string;
@OneToOne(type => Review, {
nullable: true,
cascade: true,
})
@JoinColumn({ name: 'review_id' })
review: Review;
Обзорная таблица
@Entity()
export class Review {
@PrimaryGeneratedColumn()
id: number;
@CreateDateColumn({ type: 'timestamptz' })
created_at: Date;
@OneToMany(type => Task, task => task.review, {
cascade: true,
nullable: true,
})
tasks: Task[];
Таблица Задач
@Entity()
export class Task {
@PrimaryGeneratedColumn()
id: number;
@Column({ nullable: true })
message: string;
@Column({ nullable: true })
category: string;
@ManyToOne(type => Review, review => review.tasks)
review: Review;
const businessRepo = connection.getRepository(Business);
const business = await businessRepo.findOne({
where: { id: id },
});
let review: Review = new Review();
review.created_at = created_at;
business.review = review
const tasks: Task[] = [];
let task: Task = new Task();
task.message = 'some message';
task.category = 'some category';
tasks.push(task);
await businessRepo.update(
business.id,
business,
);
Я сталкиваюсь с ошибкой при обновлении бизнес-объекта.
(node:14432) UnhandledPromiseRejectionWarning: Error: Cannot query across one-to-many for property tasks
Я попытался обойти проблему, пытаясь сделать каскад ложным, но тщетно. Я не хочу выполнять каскадное обновление с помощью одного оператора, так как у меня много настроек при обновлении задачи, и поэтому я обрабатываю обновление задачи отдельно.
Знаете ли вы, как я могу решить эту проблему?
Комментарии:
1. Что ты хотел сделать
review.tasks = tasks
?
Ответ №1:
Попробуйте использовать/добавить, отношения: [«entity_related»] с помощью метода поиска