当前位置: 首页 > 面试题库 >

在init上运行程序

谢涵煦
2023-03-14
问题内容

我将创建一个程序(脚本),该程序在运行时会启动操作,因此我不在此程序中使用路由

我正在使用NestJS框架(要求)。

实际上,我正在尝试在main.ts文件中编写代码,并使用方法导入服务。

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import {AppService} from './app.service'
import { TreeChildren } from 'typeorm';
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
let appService: AppService; <- can't use appService methods
this.appService.
bootstrap();

我的服务

@Injectable()
export class AppService {
  constructor(
    @InjectRepository(File) private readonly fileRepository: Repository<File>,
  ) {}

  async getTypes(): Promise<File[]> {
    return await this.fileRepository.find();
  }
}

我将使用服务来处理我的操作,所以我会使用DI,该DI在非类文件中不起作用。

我会知道如何以适当的方式在初始化时间内运行我的操作


问题答案:

有两种方法可以做到这一点:

A)生命周期事件

使用生命周期事件(类似于Angular中的更改检测挂钩)来运行代码并注入所需的服务,例如:

服务

export class AppService implements OnModuleInit {
  onModuleInit() {
    console.log(`Initialization...`);
    this.doStuff();
  }
}

模组

export class ApplicationModule implements OnModuleInit {

  constructor(private appService: AppService) {
  }

  onModuleInit() {
    console.log(`Initialization...`);
    this.appService.doStuff();
  }
}

B)执行上下文

使用执行上下文访问main.ts中的任何服务:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
  const appService = app.get(AppService);
}


 类似资料:
  • 安装lein 下载安装脚本 wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein 把lein放到~/bin下并chmod +x lein增加可执行权限(默认我们的bash是会自动把~/bin加到PATH环境变量里的) 执行lein,自动下载安装所需的软件包 安装streamparser 如果没有安

  • 问题内容: 我试图找到有关该函数在Go中作用的精确解释。我读了《有效围棋》所说的话,但是不确定我是否完全理解它的意思。我不确定的确切句子如下: 最后意味着:在包中的所有变量声明评估了其初始化程序之后,将调用init,并且只有在所有导入的包都已初始化之后才对init进行评估。 什么意思 这是否意味着如果在包及其文件中声明“全局”变量,则init()直到所有值都被评估后才运行,然后在运行./main_

  • 每当我运行命令python3.6 Check.py时,我都会得到以下错误:, 熊猫误差 回溯(最后一次调用):文件“/usr/lib/python3/dist-packages/pandas/_-libs/init.py”,第30行,从pandas开始。_-libs导入哈希表为_-hashtable,lib为_-lib,tslib为_-tslib文件“/usr/lib/python3/dist-p

  • 我有一个简单的Java代码: 文件夹结构为: 在文件夹中,有和文件。 null null 这里怎么了?

  • 问题内容: 假设我在同一台计算机上同时运行两个Java程序。这些程序将在单个JVM实例中运行还是在两个不同的JVM实例中运行? 问题答案: 如果您使用命令(从命令行)开始每个命令,它们将作为完全独立的JVM运行。 “程序”可以作为在一个JVM中运行的单独线程启动。

  • 部署0.9.5版本的storm集群 streamparse最新稳定版是基于0.9.5版本的storm的,所以我们需要把storm集群的版本回退到0.9.5,方法如下: wget http://apache.fayea.com/storm/apache-storm-0.9.5/apache-storm-0.9.5.tar.gz 解压后修改conf/storm.yaml文件,添加如下配置项: st