РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpIxUx 67 of 201 menu
◀ ▶

Составной уникальный индекс в Nest

Иногда пара полей должна встречаться в таблице не больше одного раза: дубль ломает правило учёта или связывает две записи с одним и тем же сочетанием.

Составной индекс с опцией unique со значением true задают на классе сущности списком колонок. PostgreSQL отклонит вторую вставку с той же парой значений, хотя каждая колонка по отдельности может повторяться. При включённой синхронизации схемы ограничение появится вместе с таблицей после перезапуска.

Покажем на примере постов:

import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'; @Entity() @Index(['title', 'author'], { unique: true }) export class Post { @PrimaryGeneratedColumn() id: number; @Column() title: string; @Column() author: string; }

Таблицу связывают с модулем темы:

import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Post } from '../post.entity.js'; @Module({ imports: [TypeOrmModule.forFeature([Post])], }) export class PostsModule {}

Корень настраивает соединение и импорт модуля с сущностью:

import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { PostsModule } from './posts/posts.module.js'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'postgres', password: 'postgres', database: 'site', autoLoadEntities: true, synchronize: true, }), PostsModule, ], }) export class AppModule {}

Добавьте в Worker две текстовые колонки и общий уникальный индекс по обеим, оформите WorkersModule и подключите базу с автосинхронизацией схемы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить