首页 > 解决方案 > 错误:无法跨一对多查询属性 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

我尝试通过尝试将级联设为假来尝试解决方法,但徒劳无功。我不想用单个语句进行级联更新,因为我在更新任务时有很多自定义,所以我单独处理任务更新。

你知道我该如何解决这个问题吗?

标签: node.jstypescriptone-to-manytypeormnode.js-typeorm

解决方案


尝试使用/添加,关系:[“entity_related”]与find方法


推荐阅读