Ошибка: Не удается выполнить запрос по типу «один ко многим» для свойства TypeORM

#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»] с помощью метода поиска