Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeORM:使用自定义属性查询多对多_Javascript_Mysql_Typescript_Nestjs_Typeorm - Fatal编程技术网

Javascript TypeORM:使用自定义属性查询多对多

Javascript TypeORM:使用自定义属性查询多对多,javascript,mysql,typescript,nestjs,typeorm,Javascript,Mysql,Typescript,Nestjs,Typeorm,各位,我是打字新手,需要帮助 我试着用这样的自定义属性创建多对多关系 这是我的问题 我想要这样的查询结果 { "id": 1, "username": "John Doe", "products": [ { "id": 1, "title": 'A shirt', "description": 'lorem ipsum' } ] } 但是我得到了 {

各位,我是打字新手,需要帮助

我试着用这样的自定义属性创建多对多关系

这是我的问题

我想要这样的查询结果

{
    "id": 1,
    "username": "John Doe",
    "products": [
        {
            "id": 1,
            "title": 'A shirt',
            "description": 'lorem ipsum'
        }
    ]
}
但是我得到了

{
    "id": 1,
    "username": "John Doe",
    "products": [
        {
            "id": 1,
            "userId": 1,
            "productId":1
        }
    ]
}
这是我的疑问

const user = await this.userRepository.findOne({
      where: { id },
      relations: ["products"],
});
这是我的密码

用户产品实体

// user-product.entity.ts

@Entity()
export class UserProduct extends BaseEntity {

  @PrimaryColumn()
  public id: number;

  @Column()
  public userId!: number;

  @Column()
  public productId!: number;

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

  @ManyToOne(
    () => Product,
    (product) => product.users
  )
  public product!: Product;

}
// product.entity.ts
@Entity()
export class User extends BaseEntity {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  title: string;

  @Column({ nullable: true })
  subtitle: string;

  @Column({ nullable: true })
  description: string;


  @OneToMany(
    () => UserProduct,
    (userProduct) => userProduct.product
  )
  public users!: UserProduct[];

}
用户实体

// user.entity.ts

@Entity()
export class User extends BaseEntity {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  username: string;

  @OneToMany(()=> UserProduct, userToProduct => userToProduct.user)
  public products!: UserProduct[];

}
产品实体

// user-product.entity.ts

@Entity()
export class UserProduct extends BaseEntity {

  @PrimaryColumn()
  public id: number;

  @Column()
  public userId!: number;

  @Column()
  public productId!: number;

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

  @ManyToOne(
    () => Product,
    (product) => product.users
  )
  public product!: Product;

}
// product.entity.ts
@Entity()
export class User extends BaseEntity {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  title: string;

  @Column({ nullable: true })
  subtitle: string;

  @Column({ nullable: true })
  description: string;


  @OneToMany(
    () => UserProduct,
    (userProduct) => userProduct.product
  )
  public users!: UserProduct[];

}
我想知道。如何获得上述结果?


我想你想知道如何加载子关系

关系-关系需要加载主实体。还可以加载子关系(join和leftJoinAndSelect的缩写)

您可以检查此文档:

您可以这样做:

const user=wait this.userRepository.findOne({
其中:{id},
关系:[“产品.产品”],
});

我想您想知道如何加载子关系

关系-关系需要加载主实体。还可以加载子关系(join和leftJoinAndSelect的缩写)

您可以检查此文档:

您可以这样做:

const user=wait this.userRepository.findOne({
其中:{id},
关系:[“产品.产品”],
});