我目前正在用NestJS和Sequelize开发一个API,似乎在注入仓库时出现了一个问题。对于上下文,当服务调用这个.repo.findByKey时,函数未定义,程序失败,但当用VSCode的调试器检查时,proptotype内部有这个函数。
下面是一个复制的来源:
// service.ts
@Injectable()
export class Service {
constructor(
@Inject('REPOSITORY') private repo: IRepository
) {
super();
}
async getByCode(code: string) {
console.log(this.repo); >> [class Repository extends BaseRepository]
console.log(this.repo.findByKey); >> undefined
return res = await this.repo.findByKey(code); >> this.repo.findByKey is not a function
}
}
// repository.ts
@Injectable()
export class Repository
extends BaseRepository
implements IRepository
{
constructor(
@Inject('DATABASE_HELPER')
databseHelper: DatabaseHelper,
private mapper: CountryMapper,
) {
super(databseHelper);
}
async findByKey(code: string) -> Promise<DTO> {
... never reached
}
}
我找不到这个问题的根源,有黑魔 Mage 在这里帮助我吗?
根据请求,以下是模块配置:
@Module({})
export class ExampleModule {
static register(typeClass: Type<IService>): DynamicModule {
return {
imports: [
HelperModule,
SequelizeModule.forFeature([Entity]),
],
module: ExampleModule,
providers: [
ExampleMapper,
{
provide: 'REPOSITORY',
useValue: Repository,
},
{
provide: 'SERVICE',
useClass: typeClass,
},
],
controllers: [Controller],
};
}
}
1条答案
按热度按时间zbq4xfa01#
你是在注入类本身,所以
this.repo
是一个从未被调用过的构造函数。useValue
适用于共享值,如配置对象、连接字符串等。如果要注入类示例,需要如下配置提供程序