首页 > 解决方案 > 在 typeorm 中加载急切的表连接

问题描述

我希望能够急切加载用户列表,并急切加载该用户拥有的生物。

这是我的User / Creature / UserCreature表:

// user.ts
import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  BaseEntity,
  OneToMany,
} from "typeorm";
import { UserCreature } from "./userCreature";

@Entity()
export class User extends BaseEntity {
  @PrimaryGeneratedColumn()
  id!: string;

  @Column()
  email!: string;

  @OneToMany(() => UserCreature, (userCreature) => userCreature.user)
  userCreature!: UserCreature[];
}

// creature.ts
import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  BaseEntity,
  OneToMany,
} from "typeorm";
import { UserCreature } from "./userCreature";

@Entity()
export class Creature extends BaseEntity {
  @PrimaryGeneratedColumn()
  id!: string;

  @Column()
  name!: string;

  @OneToMany(() => UserCreature, (userCreature) => userCreature.creature)
  userCreature!: UserCreature[];
}

// user_creature.ts
import { Entity, Column, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
import { User } from "./user";
import { Creature } from "./creature";

@Entity()
export class UserCreature {
  @PrimaryGeneratedColumn()
  public id!: string;

  @Column()
  public user_id!: string;

  @Column()
  public creature_id!: string;

  @Column()
  public is_owned!: boolean;

  @ManyToOne(() => User, (user) => user.userCreature)
  public user!: User;

  @ManyToOne(() => Creature, (creature) => creature.userCreature)
  public creature!: Creature;
}

问题是我无法找到一种方法来急切加载用户拥有的用户和生物列表。这是我将如何做到的一个例子sequelize

const userCreatures = await User.findAll({
  where: {
    id: ["1", "2", "3"],
  },
  include: [
    {
      as: "my_creatures",
      model: Creature,
      through: { where: { is_owned: "is_owned" }, attributes: ["name", "id"] },
    },
  ],
  distinct: true,
});

现在,我应该如何在 typeorm 中做上述事情?

在此先感谢您的时间。

标签: node.jstypescriptormtypeorm

解决方案


推荐阅读