【问题标题】:nestjs different beetween mongoose model provider and MongooseModule.forFeaturenestjs 不同的beetween mongoose模型提供者和MongooseModule.forFeature
【发布时间】:2020-10-02 15:56:06
【问题描述】:

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

@Module({
    imports: [
        MongooseModule.forFeature([{name: "COMPANY_MODEL", schema: CompanySchema}]),
        DatabaseModule
    ],
    controllers: [CompanyController],
    providers: [CompanyService,CityStateService],
})

并在服务中使用 InjectModel:

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

在第二种方法中,我们有额外的文件company.provider.ts,其中包含:

export const CompanyProviders = [
    {
        provide: "COMPANY_MODEL",
        useFactory: (connection: Connection) => connection.model("Company", CompanySchema),
        inject: ["DATABASE_CONNECTION"],
    },
];

我们在模块中提供它:

@Module({
    imports: [
        DatabaseModule
    ],
    controllers: [CompanyController],
    providers: [CompanyService,CityStateService,...CompanyProviders],
})
export class CompanyModule { }

在服务中我们使用简单的注入:

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

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

【问题讨论】:

    标签: mongodb mongoose nestjs


    【解决方案1】:

    这两种方法的唯一区别是,第一种是由 Nest 包官方管理的,而后者是由你管理的。最后,这些方法实际上是相同的,as seen by the source code,唯一的区别是第一种方法可能随着时间的推移而减少重复性,而无需首先为提供的模型创建工厂函数。除此之外,没有任何区别,你应该选择你更舒服的。

    【讨论】:

      猜你喜欢
      • 2018-10-22
      • 2020-06-16
      • 2010-09-29
      • 2020-02-26
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 2021-07-17
      • 2020-07-18
      相关资源
      最近更新 更多