异步提供程序 Asynchronous providers

有时,应用程序启动应该延迟,直到一个或多个**异步任务**完成。例如,您可能不想在与数据库建立连接之前开始接受请求。您可以使用异步提供程序实现这一点。

此语法是将async/awaituseFactory语法结合使用。工厂返回一个Promise,工厂函数可以await异步任务。Nest 将在实例化依赖于(注入)此类提供程序的任何类之前等待承诺的解决。

ts
{
  provide: 'ASYNC_CONNECTION',
  useFactory: async () => {
    const connection = await createConnection(options);
    return connection;
  },
}
提示

此处 详细了解自定义提供程序语法。

注入

异步提供程序通过其令牌注入到其他组件,就像任何其他提供程序一样。在上面的示例中,您将使用构造 @Inject('ASYNC_CONNECTION')

示例

TypeORM 配方 有一个更实质性的异步提供程序示例。