首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在TypeORM中存根嵌套存储库?

在TypeORM中存根嵌套存储库的方法是通过使用TypeORM的Repository模式和Entity的关系来实现。存根嵌套存储库是指在一个实体中嵌套另一个实体的存储库。

以下是在TypeORM中实现存根嵌套存储库的步骤:

  1. 定义实体类:首先,需要定义两个实体类,例如ParentEntity和ChildEntity。ParentEntity中包含一个ChildEntity的数组属性。
代码语言:txt
复制
@Entity()
export class ParentEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @OneToMany(type => ChildEntity, child => child.parent, { cascade: true })
  children: ChildEntity[];
}

@Entity()
export class ChildEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @ManyToOne(type => ParentEntity, parent => parent.children)
  parent: ParentEntity;
}
  1. 定义存储库类:接下来,需要定义两个存储库类,分别对应ParentEntity和ChildEntity。在ParentRepository中,使用TypeORM的getRepository方法获取ChildRepository的实例,并将其注入到ParentEntity的children属性中。
代码语言:txt
复制
@EntityRepository(ParentEntity)
export class ParentRepository extends Repository<ParentEntity> {
  async saveWithChildren(parent: ParentEntity): Promise<ParentEntity> {
    const childRepository = getRepository(ChildEntity);
    parent.children = await Promise.all(parent.children.map(child => childRepository.save(child)));
    return this.save(parent);
  }
}

@EntityRepository(ChildEntity)
export class ChildRepository extends Repository<ChildEntity> {}
  1. 注册存储库类:在应用程序的入口文件中,需要使用createConnection方法创建数据库连接,并将ParentRepository和ChildRepository注册到连接中。
代码语言:txt
复制
import { createConnection } from "typeorm";
import { ParentEntity, ChildEntity } from "./entities";
import { ParentRepository, ChildRepository } from "./repositories";

createConnection({
  type: "mysql",
  host: "localhost",
  port: 3306,
  username: "root",
  password: "password",
  database: "database",
  entities: [ParentEntity, ChildEntity],
  synchronize: true,
  logging: true,
  subscribers: [],
  migrations: [],
  cli: {
    entitiesDir: "src/entities",
    migrationsDir: "src/migrations",
    subscribersDir: "src/subscribers"
  }
}).then(connection => {
  connection.getCustomRepository(ParentRepository);
  connection.getCustomRepository(ChildRepository);
});
  1. 使用存储库类:现在可以在应用程序的其他部分使用ParentRepository和ChildRepository来进行数据库操作了。
代码语言:txt
复制
import { getCustomRepository } from "typeorm";
import { ParentRepository, ChildRepository } from "./repositories";

const parentRepository = getCustomRepository(ParentRepository);
const childRepository = getCustomRepository(ChildRepository);

const parent = new ParentEntity();
parent.name = "Parent";
parent.children = [];

const child1 = new ChildEntity();
child1.name = "Child 1";
child1.parent = parent;

const child2 = new ChildEntity();
child2.name = "Child 2";
child2.parent = parent;

parent.children.push(child1, child2);

parentRepository.saveWithChildren(parent);

这样,就可以在TypeORM中实现存根嵌套存储库了。通过使用TypeORM的Repository模式和Entity的关系,可以方便地进行嵌套存储库的操作。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库 MySQL:https://cloud.tencent.com/product/cdb
  • 腾讯云云服务器 CVM:https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储 COS:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务 TBC:https://cloud.tencent.com/product/tbc
  • 腾讯云人工智能 AI:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台 IoT Hub:https://cloud.tencent.com/product/iothub
  • 腾讯云移动开发 MSDK:https://cloud.tencent.com/product/msdk
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一orm篇【如EF般丝滑】typeorm介绍(8/8)

    在使用nodejs开发过程中,刚好碰到需要做一个小工具,需要用到数据库存储功能。而我又比较懒,一个小功能不想搞一个nodejs项目,又搞一个后端项目。不如直接在nodejs里面把对数据库的操作也做掉。 结果百度一圈下来发现nodejs这边还都是比较原始的、类似后端的通过coneection连数据库,接着open,在写sql语句干嘛干嘛的。经过后端这么多年的脚手架工具熏陶,实在懒得写这些没营养的简单增删改查sql语句了。 typeorm github地址 typeorm github地址 遂通过baidu、google找到了typeorm这个orm框架。果然不错,作者自己也说大量参考了如entityframework、hibernate、dapper等等众多orm框架。吸收了各家之所长。 更多介绍和各种示例可以参考它的demo项目,基本每个数据库都有一个demo,然后对特性也基本都介绍到的。 比如mongodb如何映射复杂对象,关系型数据怎么弄级联删除之类的功能

    02
    领券