首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

执行上下文

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

入门

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

JS

代码语言:javascript
复制
async function bootstrap() {
  const app = await NestFactory.createApplicationContext(ApplicationModule);
  // logic...
}
bootstrap();

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

JS

代码语言:javascript
复制
const app = await NestFactory.create(ApplicationModule);
const tasksController = app.get(TasksController);

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

JS

代码语言:javascript
复制
const app = await NestFactory.create(ApplicationModule);
const tasksController = app.select(TasksModule).get(TasksController, { strict: true });

get()

检索应用程序上下文中可用的控制器或提供程序的实例(包括警卫,过滤器等)。

select()

例如,浏览模块树,从所选模块中提取特定实例(与启用的严格模式一起使用)。

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

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com