使用TypeOrm进行深度克隆

时间:2019-05-20 11:08:56

标签: database typescript typeorm

我有一个非常简单的问题,TypeOrm无法解决。

例如,我有一个包含任务的项目。每个任务都有几个文件,例如

项目

@Entity()
export class Project{

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;

    @OneToMany(type => Task, task=> task.project)
    tasks: Task[];

}

任务

@Entity()
export class Task {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  url: string;

  @ManyToOne(type => Project, project => project.tasks)
  project: Project;

  @OneToMany(type => File, file => file.task)
  files: File[];
}

文件

@Entity()
export class File {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  url: string;

  @ManyToOne(type => Task, task => task.files)
  task: Task;

}

问题是,如何克隆具有所有任务和文件的项目

我拥有的简单结构

Project
      |-task1-|
             --file1
             --file2
      |-task1-|
             --file3
             --file4

当我创建 project 对象的副本并尝试保存时, TypeOrm 仅更改主键的ID 在数据库中。例如

const object = new Project();

for (const prop in originProject) {
  object[prop] = originProject[prop];
}
object.name = 'Cloned';

await connection.manager.save(photo2);

我该怎么做才能用所有任务和文件来深度克隆项目?

当我创建 project 对象的副本并尝试保存时, TypeOrm 仅更改主键的ID 在数据库中。例如

const object = new Project();

for (const prop in originProject) {
  object[prop] = originProject[prop];
}
object.name = 'Cloned';

await connection.manager.save(photo2);

我该怎么做才能用所有任务和文件来深度克隆项目?

0 个答案:

没有答案