将 @nestjs/mongoose 从 9.0.3 升级到 9.1.0 后出现错误“错误:Nest 无法解析 WatchlistService 的依赖项”

Tob*_* S. 3 mongoose nestjs

将 @nestjs/mongoose 从 9.0.3 更新到 9.1.0 后,我遇到以下错误:

[Nest] 3818  - 06/04/2022, 12:50:13 AM   ERROR [ExceptionHandler] Nest can't resolve dependencies of the WatchlistService (?). Please make sure that the argument PortfolioModel at index [0] is available in the AppModule context.

Potential solutions:
- If PortfolioModel is a provider, is it part of the current AppModule?
- If PortfolioModel is exported from a separate @Module, is that module imported within AppModule?
  @Module({
    imports: [ /* the Module containing PortfolioModel */ ]
  })

Error: Nest can't resolve dependencies of the WatchlistService (?). Please make sure that the argument PortfolioModel at index [0] is available in the AppModule context.

Potential solutions:
- If PortfolioModel is a provider, is it part of the current AppModule?
- If PortfolioModel is exported from a separate @Module, is that module imported within AppModule?
  @Module({
    imports: [ /* the Module containing PortfolioModel */ ]
  })

    at Injector.lookupComponentInParentModules (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:231:19)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at Injector.resolveComponentInstance (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:184:33)
    at resolveParam (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:106:38)
    at async Promise.all (index 0)
    at Injector.resolveConstructorParams (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:121:27)
    at Injector.loadInstance (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:52:9)
    at Injector.loadProvider (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:74:9)
    at async Promise.all (index 4)
    at InstanceLoader.createInstancesOfProviders (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/instance-loader.js:44:9)
    at /home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/instance-loader.js:29:13
    at async Promise.all (index 1)
    at InstanceLoader.createInstances (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/instance-loader.js:28:9)
    at InstanceLoader.createInstancesOfDependencies (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/instance-loader.js:18:9)
    at /home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/nest-factory.js:96:17
    at Function.asyncRun (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/errors/exceptions-zone.js:22:13)
Run Code Online (Sandbox Code Playgroud)

这是我的设置:

投资组合.entity.ts

[Nest] 3818  - 06/04/2022, 12:50:13 AM   ERROR [ExceptionHandler] Nest can't resolve dependencies of the WatchlistService (?). Please make sure that the argument PortfolioModel at index [0] is available in the AppModule context.

Potential solutions:
- If PortfolioModel is a provider, is it part of the current AppModule?
- If PortfolioModel is exported from a separate @Module, is that module imported within AppModule?
  @Module({
    imports: [ /* the Module containing PortfolioModel */ ]
  })

Error: Nest can't resolve dependencies of the WatchlistService (?). Please make sure that the argument PortfolioModel at index [0] is available in the AppModule context.

Potential solutions:
- If PortfolioModel is a provider, is it part of the current AppModule?
- If PortfolioModel is exported from a separate @Module, is that module imported within AppModule?
  @Module({
    imports: [ /* the Module containing PortfolioModel */ ]
  })

    at Injector.lookupComponentInParentModules (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:231:19)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at Injector.resolveComponentInstance (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:184:33)
    at resolveParam (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:106:38)
    at async Promise.all (index 0)
    at Injector.resolveConstructorParams (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:121:27)
    at Injector.loadInstance (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:52:9)
    at Injector.loadProvider (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/injector.js:74:9)
    at async Promise.all (index 4)
    at InstanceLoader.createInstancesOfProviders (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/instance-loader.js:44:9)
    at /home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/instance-loader.js:29:13
    at async Promise.all (index 1)
    at InstanceLoader.createInstances (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/instance-loader.js:28:9)
    at InstanceLoader.createInstancesOfDependencies (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/injector/instance-loader.js:18:9)
    at /home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/nest-factory.js:96:17
    at Function.asyncRun (/home/tobias/Github/Financl/financl-api/node_modules/@nestjs/core/errors/exceptions-zone.js:22:13)
Run Code Online (Sandbox Code Playgroud)

数据库模块.ts

export class Portfolio extends Document {
  @Prop({ required: true, trim: true, maxlength: 100, minlength: 1 })
  name: string
}

export const PortfolioSchema = SchemaFactory.createForClass(Portfolio)
Run Code Online (Sandbox Code Playgroud)

应用程序模块.ts

const databaseModules = [
  MongooseModule.forRoot(uris.MONGO_PRIMARY_CONNECTION_STRING, {
    connectionName: 'primary_connection'
  }),
  MongooseModule.forFeature(
    [{ name: Portfolio.name, schema: PortfolioSchema }],
    'primary_connection'
  ),
]

@Module({
  imports: [...databaseModules],
  exports: [...databaseModules]
})
export class DatabaseModule {}
Run Code Online (Sandbox Code Playgroud)

帐户.服务.ts

@Module({
  imports: [DatabaseModule],
  controllers: [
    AccountController
  ],
  providers: [
    AccountService
  ]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

包.json

@Injectable()
export class AccountService {
  constructor(
    @InjectModel(Portfolio.name) private portfolioModel: Model<Portfolio>
  ) {}
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*evi 6

您需要提供连接名称InjectModel

@InjectModel(Portfolio.name, 'primary_connection') private portfolioModel: Model<Portfolio>
Run Code Online (Sandbox Code Playgroud)