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

t1qtbnec  于 2023-06-23  发布在  Go
关注(0)|答案(1)|浏览(119)
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { Commande, CommandeSchema } from 'src/commande/commande.model';

@Module({
    imports: [
        MongooseModule.forFeatureAsync([
            {
                name: 'Commande',
                imports: [SharedModule],
                inject: [MyService],
                useFactory: async (myService: MyService) => {
                    const schema = CommandeSchema;
                    schema.post('save', async function (doc) {
                        const commande = doc as unknown as Commande;
                        await myService.savingLivraison(commande);
                    });
                    return schema;
                },
            },
        ]),],
    providers: [MyService],
    exports: [MyService]
})
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的任何地方都可用

相关问题