执行上下文
执行上下文
有几种方法可以安装 Nest 应用程序。您可以创建Web应用程序,微服务或只是 Nest 执行上下文
。Nest上下文是Nest容器的包装器,它包含所有实例化的类。我们可以直接使用应用程序对象从任何导入的模块中获取现有实例。多亏了这一点,您可以在任何地方利用Nest框架,包括 CRON
作业,甚至可以在其上构建 CLI
。
入门
为了创建Nest应用程序上下文,我们使用以下语法:
JS
async function bootstrap() {
const app = await NestFactory.createApplicationContext(ApplicationModule
// logic...
}
bootstrap(
之后,Nest 允许您选择在 Nest 应用程序中注册的任何实例。让我们想象一下,我们有一个TasksController
在TasksModule
。此类提供了一组可用的方法,我们希望从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() | 例如,浏览模块树,从所选模块中提取特定实例(与启用的严格模式一起使用)。 |
提示
默认情况下选择根模块。要选择任何其他模块,您需要遍历整个模块树(逐步)。