如何在 NestJS 中插入具有 OneToMany 关系的实体?

eps*_*lon 7 typeorm nestjs

在 typeorm 官方文档https://typeorm.io/#/many-to-one-one-to-many-relations 中描述了如何执行此操作。但是我不能在 NestJS 中使用Repositoryinsert方法做同样的事情。

我已经写了这些实体(省略了其他列)

@Entity()
export class News {
  @OneToMany(type => NewsImage, image => image.news)
  public images: NewsImage[];
}

@Entity()
export class NewsImage {
  @ManyToOne(type => News, news => news.images)
  public news: News;
}
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情

function first() {
  const news = new News();
  const image = new NewsImage();
  news.images = [ image ];
  return from(this.newsRepo.insert(news))
    .pipe(
      switchMap(() => this.imageRepo.insert(image)),
    );
}

function second() {
  const news = new News();
  const image = new NewsImage();
  image.news = news;
  return from(this.imageRepo.insert(image))
    .pipe(
      switchMap(() => this.newsRepo.insert(news)),
    )
}
Run Code Online (Sandbox Code Playgroud)

它插入新闻和图像,但图像newsIdnull.

小智 15

检查级联属性

@Entity()
export class News {
  @OneToMany(type => NewsImage, image => image.news, { cascade: ['insert', 'update'] })
  public images: NewsImage[];
}
Run Code Online (Sandbox Code Playgroud)

然后如果你做类似的事情

let news = {
        images: [{
            date: "",
            etc: ""
        }],
        title: ""
    }
Run Code Online (Sandbox Code Playgroud)

如果您调用它,this.repository.save(news)它将保存新闻和图像。还有更新。在 typeorm 文档上查看更多关于此的文档。