Я предполагаю, что по запросу «уникальные столбцы typeorm 2» вы имеете в виду TypeORM, популярную библиотеку объектно-реляционного сопоставления (ORM), используемую с TypeScript и JavaScript. Если вы хотите определить два уникальных столбца в TypeORM, у вас есть несколько вариантов:
- Использование декоратора
@Unique: вы можете применить декоратор@Uniqueк соответствующим столбцам в вашем классе сущности, например:
import { Entity, Column } from 'typeorm';
@Entity()
export class YourEntity {
@Column()
@Unique(['column1', 'column2'])
column1: string;
@Column()
@Unique(['column1', 'column2'])
column2: string;
}
- Использование декоратора
@Index. Вы можете создать уникальный составной индекс, применив декоратор@Indexс опциейunique: trueк класс сущности, определяющий столбцы в виде массива:
import { Entity, Column, Index } from 'typeorm';
@Entity()
@Index(['column1', 'column2'], { unique: true })
export class YourEntity {
@Column()
column1: string;
@Column()
column2: string;
}
- Использование декоратора
@EntityRepository. Если вы используете собственный репозиторий для своей сущности, вы можете определить уникальный запрос с помощью методаcreateQueryBuilder:
import { EntityRepository, Repository } from 'typeorm';
import { YourEntity } from '../entities/YourEntity';
@EntityRepository(YourEntity)
export class YourEntityRepository extends Repository<YourEntity> {
async findByColumns(column1: string, column2: string): Promise<YourEntity | undefined> {
return this.createQueryBuilder('entity')
.where('entity.column1 = :column1', { column1 })
.andWhere('entity.column2 = :column2', { column2 })
.getOne();
}
}
Это всего лишь несколько методов определения уникальных столбцов в TypeORM. Вы можете выбрать подход, который лучше всего соответствует требованиям вашего проекта.