在Nest.js中创建动态模块时,我应该使用registerAsync还是forRootAsync?

时间:2019-01-12 05:46:46

标签: node.js typescript nestjs

在创建dynamic module时,某些nestjs模块使用的是 registerAsync(),有些使用 forRootAsync()。是推荐的方法,还是两者之间有什么区别?

PassportModule.registerAsync({
  imports: [ConfigModule],
  useExisting: PassportConfigService,
}),

TypeOrmModule.forRootAsync({
  imports: [ConfigModule],
  useExisting: TypeormConfigService,
}),

1 个答案:

答案 0 :(得分:1)

名称仅是约定,并不影响应用程序的行为。不过,选择一个适合您的用例的名称很重要。我会考虑以下条件:

如果您的模块必须以不同的方式导入到根/子模块中,请坚持使用forRoot / forChild

否则,请使用描述您的用例的名称。为什么首先需要 dynamic 导入,它有什么作用?例如:
MyDatabaseModule.populate(data)MyDatabaseModule.createConnection(configuration)

并非所有动态模块实际上都是异步的。因此,如果您的导入实际上是异步的(或可以是异步的),请仅使用后缀async。这也使您有机会提供导入的同步和异步变体。