如何在其数组元素中找到具有特定值的所有实体?

时间:2020-04-06 15:58:28

标签: typeorm

我的实体包含具有枚举类型的数组元素。
我必须找到其数组元素中包含某个枚举值的所有实体。

喜欢这个。

enum AccessoryType {
  Patio = 'PATIO',
  DriveWay = 'DRIVE_WAY',
  ...
}

enum MaterialType {
  Granite = 'GRANITE',
  BlueStone = 'BLUE_STONE',
  NaturalStone = 'NATURAL_STONE',
  ...
}

@Injectable()
class IdeaEntity {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column()
  url: string;

  @Column({ type: 'enum', enum: AccessoryType })
  accessoryType: AccessoryType;

  @ApiProperty({ enum: MaterialType, isArray: true })
  @Column({
    type: 'enum',
    enum: MaterialType,
    array: true,
  })
  materialTypes: MaterialType[];
}

function myQueryFunction(accessoryType: AccessoryType, materialTypes: MaterialType[], skip: number, take: number): Promise<IdeaEntity[]> {
  ...

  return ideaRepository.find({
    where: {
      accessoryType: accessoryType,
      materialTypes: {
        contains: materialTypes
      }
    }, skip, take
  });
  ...
}

或至少(提供单个值):

where: {
  ...
  materialTypes: {
    contains: MaterialType.Granite
  }
  ...
}

是否可以使用typeorm函数来实现这一目标?

1 个答案:

答案 0 :(得分:1)

您已尝试过这种方法:https://github.com/typeorm/typeorm/issues/1401

但是我建议您创建另一个在每个表中具有关系的MaterialTypesEntity(使用这种方法,查找实体没有问题)