你好,我使用MongooseModule在nestJS上设置了一个钩子,但是在注入第三方服务时遇到了问题

t1qtbnec  于 2023-06-23  发布在  Go
关注(0)|答案(1)|浏览(139)
  1. import { Module } from '@nestjs/common';
  2. import { MongooseModule } from '@nestjs/mongoose';
  3. import { Commande, CommandeSchema } from 'src/commande/commande.model';
  4. @Module({
  5. imports: [
  6. MongooseModule.forFeatureAsync([
  7. {
  8. name: 'Commande',
  9. imports: [SharedModule],
  10. inject: [MyService],
  11. useFactory: async (myService: MyService) => {
  12. const schema = CommandeSchema;
  13. schema.post('save', async function (doc) {
  14. const commande = doc as unknown as Commande;
  15. await myService.savingLivraison(commande);
  16. });
  17. return schema;
  18. },
  19. },
  20. ]),],
  21. providers: [MyService],
  22. exports: [MyService]
  23. })
  24. export class SharedModule { }

当我这样做时,SharedModule模块没有加载,而我在AppModule中加载得很好,当我删除共享模块中的exports行时,我会出现错误:`[Nest] 25850 - 08/06/2023 17:02:52 ERROR [ExceptionHandler] Nest无法解析CommandeModel(DatabaseConnection,?、MyService)。
我想要的是能够在MongooseModule的上下文中使用myService

gev0vcfq

gev0vcfq1#

您已经创建了SharedModule对自身的循环依赖。SharedModule需要导入MongooseModule,但MongooseModule需要导入SharedModule。您需要做的是将MyService移动到SharedModule外部的模块中,然后SharedModuleMongooseModule可以导入该模块,然后SharedModule可以重新导出此新模块,以使MyService在导入SharedModule的任何地方都可用

相关问题