Fundamentals

异步提供者

学习如何在 NestJS 中使用异步提供者来处理需要等待异步任务完成的场景,如数据库连接建立等

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

语法是将 async/awaituseFactory 语法一起使用。工厂返回一个 Promise,工厂函数可以 await 异步任务。Nest 将等待 promise 解析,然后再实例化任何依赖于(注入)此类提供者的类。

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

提示这里了解更多关于自定义提供者语法的信息。

注入

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

示例

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