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

Пересоздание данных в Nest

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

Наполнитель сначала просит репозиторий убрать все строки сущности из таблицы, не трогая остальные таблицы и саму базу site. Затем он сохраняет свежий список объектов тем же способом, что и при первичном заполнении.

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

import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class Post { @PrimaryGeneratedColumn() id: number; @Column() title: string; }

Сервис при старте очистит таблицу и запишет новые заготовки:

import { Injectable, OnModuleInit } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Post } from '../post.entity.js'; @Injectable() export class PostService implements OnModuleInit { postRepository: Repository<Post>; constructor( @InjectRepository(Post) postRepository: Repository<Post>, ) { this.postRepository = postRepository; } async onModuleInit() { await this.postRepository.clear(); await this.postRepository.save([ { title: 'Fresh alpha' }, { title: 'Fresh beta' }, ]); } findAll() { return this.postRepository.find(); } }

Контроллер откроет актуальный список:

import { Controller, Get } from '@nestjs/common'; import { PostService } from './post.service.js'; @Controller('posts') export class PostController { postService: PostService; constructor(postService: PostService) { this.postService = postService; } @Get() findAll() { return this.postService.findAll(); } }

Модуль темы регистрирует сущность и классы страницы:

import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Post } from '../post.entity.js'; import { PostController } from './post.controller.js'; import { PostService } from './post.service.js'; @Module({ imports: [TypeOrmModule.forFeature([Post])], controllers: [PostController], providers: [PostService], }) 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 {}

При старте очистите в WorkerService таблицу работников и запишите новый набор строк. Список откройте в WorkerController и соберите WorkersModule с базой в корне.

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