执行上下文

执行上下文

有几种方法可以安装 Nest 应用程序。您可以创建Web应用程序,微服务或只是 Nest 执行上下文。Nest上下文是Nest容器的包装器,它包含所有实例化的类。我们可以直接使用应用程序对象从任何导入的模块中获取现有实例。多亏了这一点,您可以在任何地方利用Nest框架,包括 CRON 作业,甚至可以在其上构建 CLI

入门

为了创建Nest应用程序上下文,我们使用以下语法:

JS

async function bootstrap() { const app = await NestFactory.createApplicationContext(ApplicationModule // logic... } bootstrap(

之后,Nest 允许您选择在 Nest 应用程序中注册的任何实例。让我们想象一下,我们有一个TasksControllerTasksModule。此类提供了一组可用的方法,我们希望从CRON作业中调用这些方法。

JS

const app = await NestFactory.create(ApplicationModule const tasksController = app.get(TasksController

就是这样。要获取TasksController实例,我们必须使用get()方法。我们不必遍历整个模块树,该get()方法就像一个查询,自动搜索每个注册模块中的实例。但是,如果您更喜欢严格的上下文检查,则始终可以使用strict: true必须作为get()方法的第二个参数传递的options对象切换到它。然后,您必须浏览所有模块以从所选上下文中选取特定实例。

JS

const app = await NestFactory.create(ApplicationModule const tasksController = app.select(TasksModule).get(TasksController, { strict: true }

get()检索应用程序上下文中可用的控制器或提供程序的实例(包括警卫,过滤器等)。
select()例如,浏览模块树,从所选模块中提取特定实例(与启用的严格模式一起使用)。

提示默认情况下选择根模块。要选择任何其他模块,您需要遍历整个模块树(逐步)。