乐闻世界logo
搜索文章和话题

How to insert data from a many to many relationship from typeorm?

4 个月前提问
3 个月前修改
浏览次数39

1个答案

1

在 TypeORM 中处理多对多关系并插入数据涉及几个步骤,我将通过一个例子来详细说明这个过程。

1. 定义实体

假设我们有两个实体,UserGroup,它们之间是多对多的关系。首先,我们需要在这两个实体中定义这种关系。在 TypeORM 中,我们可以使用 @ManyToMany 装饰器来标识这种关系,并使用 @JoinTable 在拥有方定义联结表。

typescript
import { Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable } from "typeorm"; import { Group } from "./Group"; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @ManyToMany(() => Group) @JoinTable() groups: Group[]; }
typescript
import { Entity, PrimaryGeneratedColumn, Column, ManyToMany } from "typeorm"; import { User } from "./User"; @Entity() export class Group { @PrimaryGeneratedColumn() id: number; @Column() name: string; @ManyToMany(() => User) users: User[]; }

2. 插入数据

插入数据时,我们需要确保相关联的实体也正确处理。这通常涉及以下步骤:

a. 创建实体对象

typescript
let user = new User(); user.name = "Alice"; let group1 = new Group(); group1.name = "Group1"; let group2 = new Group(); group2.name = "Group2";

b. 设置关系

在创建关系之前,如果是新记录,可能需要先保存这些实体。

typescript
import { createConnection, getRepository } from "typeorm"; async function main() { await createConnection(/*...*/); const userRepository = getRepository(User); const groupRepository = getRepository(Group); await groupRepository.save([group1, group2]); // 关联用户与小组 user.groups = [group1, group2]; await userRepository.save(user); }

3. 确认数据

确保数据正确插入,可以通过查询已经存在的记录并检查关系是否设置正确。

typescript
async function checkUser() { const users = await userRepository.find({ relations: ["groups"] }); console.log(users); } checkUser();

这个例子展示了如何在 TypeORM 中设置多对多关系并插入相关数据。在实际应用中,可能还需要处理更复杂的场景,比如更新或删除关系,处理事务等。

2024年6月29日 12:07 回复

你的答案