nestjs和typeorm-无法设置依赖项注入

时间:2018-10-02 04:49:56

标签: typescript dependency-injection nestjs

我正在尝试使用nestjstypeorm来编写基本的CRUD应用程序,但是我无法使依赖项注入正常工作。我正在尝试将代码设置数据库放入单独的模块中并导入。

这是我得到的错误:

  

[ExceptionHandler] Nest无法解析依赖项   QuestionController(?)。请确保索引处的参数   [0]在当前上下文中可用。 + 14ms 4:   v8 :: internal :: MaybeHandle   v8 :: internal ::((匿名   名称空间):: HandleApiCallHelper(v8 :: internal :: Isolate *,   v8 :: internal :: Handle,   v8 :: internal :: Handle,   v8 :: internal :: Handle,   v8 :: internal :: Handle,   v8 :: internal :: BuiltinArguments)[/ usr / local / bin / node]

这是基本的代码结构:

database.module.ts

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'sqlite',
      database: 'database.sqlite',
    }),
  ],
})
export class DatabaseModule {
}

question.module.ts

@Module({
  imports: [
    DatabaseModule,
    TypeOrmModule.forFeature([Question]),
  ],
  providers: [QuestionDal, QuestionLogic],
})
export class QuestionModule {
}

app.module.ts

@Module({
  imports: [QuestionModule],
  controllers: [QuestionController],
  providers: [],
})
export class AppModule {
}

question.dal.ts

@Injectable()
export class QuestionDal {

  constructor(@InjectRepository(Question) private questionRepo: Repository<Question>) { }

}

question.logic.ts

@Injectable()
export class QuestionLogic {
  constructor(private questionDal: QuestionDal) { }
}

question.controller.ts

@Controller()
export class QuestionController {
  constructor(private readonly appService: QuestionLogic) { }

}

感谢您的帮助或提示

1 个答案:

答案 0 :(得分:4)

您必须在QuestionLogic内导出QuestionModule提供程序。

您将可以将其注入导入QuestionModule的其他模块中。

@Module({
  imports: [
    DatabaseModule,
    TypeOrmModule.forFeature([Question]),
  ],
  providers: [QuestionDal, QuestionLogic],
  exports: [QuestionLogic] 
})
export class QuestionModule {
}