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

Инициализация модуля в Nest

Пусть текст списка должен быть готов до первого запроса. Писать его в методе страницы поздно для подготовки: к открытию адреса данные уже нужны, а метод ещё никто не вызывал.

У модуля есть момент инициализации. Он наступает, когда зависимости модуля уже собраны, а запросы ещё не приходят. На сервис вешают метод onModuleInit. Фреймворк вызовет его сам. Интерфейс OnModuleInit задаёт этот метод, чтобы у класса был нужный вид.

Покажем на примере постов. При инициализации сервис запишет текст списка в поле:

import { Injectable, OnModuleInit } from '@nestjs/common'; @Injectable() export class PostService implements OnModuleInit { private label = ''; onModuleInit() { this.label = 'All posts'; } getPosts(): string { return this.label; } }

Контроллер вернёт то, что сервис подготовил:

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

Оба класса запишем в модуль постов:

import { Module } from '@nestjs/common'; import { PostController } from './post.controller.js'; import { PostService } from './post.service.js'; @Module({ controllers: [PostController], providers: [PostService], }) export class PostsModule {}

Корневой модуль подключает модуль постов:

import { Module } from '@nestjs/common'; import { PostsModule } from './posts/posts.module.js'; @Module({ imports: [PostsModule], }) export class AppModule {}

Сделайте так, чтобы сервис WorkerService заполнял данные списка при инициализации модуля, а страница в контроллере WorkerController отдавала эти данные. Модуль работников подключите к корневому.

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