javascript - Nestjs:将提供者注入(inject)到由关键字 new 创建的对象中

标签 javascript node.js typescript dependency-injection nestjs

我正在尝试将提供程序注入(inject)到由 new 创建的对象中。是否可以?例如:

@Injectable()
export class SomeService {
}

export class SomeObject {

@Inject()
service: SomeService;
}

let obj = new SomeObject();

它在我的测试中不起作用,obj.service 未定义。

最佳答案

不,依赖注入(inject)系统仅适用于用它创建的对象。 您可以将 SomeObject 创建为 custom provider不过,例如与useClass:

@Injectable()
class SomeObject {
  constructor(private someService: SomeService) {}
}

@Module({
  providers: [
   SomeService,
   { provide: SomeObject, useClass: SomeObject },
  ],
})
export class ApplicationModule {}

或使用 useFactory 进行自定义设置逻辑:

const someObjectFactory = {
  provide: 'SomeObject',
  useFactory: (someService: SomeService) => {
    // custom setup logic
    return new SomeObject(someService);
  },
  inject: [SomeService],
};

@Module({
  providers: [SomeService, connectionFactory],
})
export class ApplicationModule {}

关于javascript - Nestjs:将提供者注入(inject)到由关键字 new 创建的对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164170/

相关文章:

javascript - 无法在 Django 中实现动态下拉列表

javascript - Chrome 扩展程序中的上下文菜单

javascript - 使用 lambda 从 DynamoDb 读取单列数据

typescript - 在另一个文件中扩展导入的枚举并使用它

javascript - Javascript 中的电话号码识别

javascript - 如何仅获取选定复选框的选项值?

node.js - 查找客户端ip express

javascript - Sequelize hasMany 通过另一个表

javascript - 根据 TypeScript 中的字符串值属性对对象进行排序

html - 我们如何使用带有自定义控件的 ngFor formArrays?