Mongodb nestjs不同于mongoose模型提供程序和MongooseModule.forFeature

Mongodb nestjs不同于mongoose模型提供程序和MongooseModule.forFeature,mongodb,mongoose,nestjs,Mongodb,Mongoose,Nestjs,当我开始将我的nestjs应用程序连接到MongoDB时,我看到了两种不同的方法 1-使用MongooseModule.forFeature 2-使用提供者 在第一种方法中,我们有这样的模块 @Module({ imports: [ MongooseModule.forFeature([{name: "COMPANY_MODEL", schema: CompanySchema}]), DatabaseModule ], controller

当我开始将我的nestjs应用程序连接到MongoDB时,我看到了两种不同的方法 1-使用MongooseModule.forFeature 2-使用提供者 在第一种方法中,我们有这样的模块

@Module({
    imports: [
        MongooseModule.forFeature([{name: "COMPANY_MODEL", schema: CompanySchema}]),
        DatabaseModule
    ],
    controllers: [CompanyController],
    providers: [CompanyService,CityStateService],
})
并在服务中使用该模型:

constructor(
        @InjectModel("COMPANY_MODEL")
        private companyModel: Model<ICompany>) { }
我们在以下模块中提供:

@Module({
    imports: [
        DatabaseModule
    ],
    controllers: [CompanyController],
    providers: [CompanyService,CityStateService,...CompanyProviders],
})
export class CompanyModule { }
在服务中,我们使用简单注入:

constructor(
            @Inject("COMPANY_MODEL")
            private companyModel: Model<ICompany>) { }

我想知道nestjs中的这两种方法有什么不同,哪一种更好?

这两种方法的唯一区别在于,第一种是由Nest软件包管理的正式内容,第二种是由您管理的内容。最终,这些方法实际上是相同的,唯一的区别是,第一种方法可能会随着时间的推移而减少重复性,而不会首先为提供的模型创建工厂功能。除此之外,没有区别,你应该选择你更喜欢的

constructor(
            @Inject("COMPANY_MODEL")
            private companyModel: Model<ICompany>) { }