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

Составной индекс в Nest

Фильтр иногда опирается сразу на два поля: например, заголовок и имя автора вместе. Отдельный индекс на каждой колонке не всегда помогает такому сочетанию в одном запросе.

Составной индекс задают на классе сущности: декоратор Index получает массив имён колонок в нужном порядке. Уникальность при этом не требуют: повторяющиеся пары значений допустимы. При включённой синхронизации схемы индекс появится после перезапуска приложения.

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

import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'; @Entity() @Index(['title', 'author']) 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить