【发布时间】:2020-07-18 21:38:00
【问题描述】:
是否可以从同一模块将服务注入工厂提供程序?我有一个服务AppService,我想在下面的这个工厂提供者中使用它。
这是我的代码:
app.module.ts
@Module({
imports: [
MongooseModule.forFeatureAsync([
{
name: 'List',
imports: [AnotherModule],
useFactory: (anotherService: AnotherService) => {
const schema = ListSchema;
schema.pre('save', function() {
// Validate
})
return schema;
},
inject: [AnotherService],
},
],
providers: [AppService],
exports: [AppService],
})
export class AppModule {}
我希望能够做这样的事情:
app.module.ts
@Module({
imports: [
MongooseModule.forFeatureAsync([
{
name: 'List',
imports: [AnotherModule, AppModule],
useFactory: (anotherService: AnotherService, appService: AppService) => {
const schema = ListSchema;
schema.pre('save', function() {
// Validate
})
return schema;
},
inject: [AnotherService, AppService],
},
],
providers: [AppService],
exports: [AppService],
})
export class AppModule {}
这不起作用。 Nest 无法初始化所有依赖项,应用程序无法运行。
甚至可以做这样的事情吗?
如何将同一模块中的服务注入此工厂提供程序?一种解决方案是将该服务移动到不同的模块,然后注入该服务。但是,如果可能的话,我想避免这种情况。
【问题讨论】:
标签: node.js typescript mongoose dependency-injection nestjs