【发布时间】: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中这两种方法有什么不同,哪一种更好?
【问题讨论】: