多对一/一对多的关系

    1. import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm";
    2. import { Photo } from "./Photo";
    3. @Entity()
    4. export class User {
    5. @PrimaryGeneratedColumn()
    6. id: number;
    7. @Column()
    8. name: string;
    9. @OneToMany(type => Photo, photo => photo.user)
    10. photos: Photo[];
    11. }

    这里我们将添加到photos属性中,并将目标关系类型指定为Photo。你也可以在@ManyToOne /@OneToMany关系中省略@JoinColumn。没有@ManyToOne@OneToMany就不可能存在。如果你想使用@OneToMany,则需要@ManyToOne。在你设置@ManyToOne的地方,相关实体将有”关联 id”和外键。

    此示例将生成以下表:

    1. const photo1 = new Photo();
    2. photo1.url = "me.jpg";
    3. await connection.manager.save(photo1);
    4. const photo2 = new Photo();
    5. await connection.manager.save(photo2);
    6. const user = new User();
    7. user.name = "John";
    8. user.photos = [photo1, photo2];
    9. await connection.manager.save(user);

    或者你可以选择:

    启用级联后,只需一次save调用即可保存此关系。

    1. const userRepository = connection.getRepository(User);
    2. const users = await userRepository.find({ relations: ["photos"] });
    3. // or from inverse side
    4. const photoRepository = connection.getRepository(Photo);

    或者使用:

    通过在关系上启用预先加载,你不必指定关系或手动加入,它将始终自动加载。